㈠ 怎么学习java设计
java设计的学习顺序首先是javaSE:基础语法、递归、面向对象、异常处理、数组、常用类、IO、线程、网络编程基本的章节顺序就是这样的。学好了javaSE就是java基础的一些东西之后,有两个方向,JavaEE(某宝京东等) 与 Android(移动APP,近期 Android 需求没那么大了)。如果是 JavaEE 方向,就可以学习 JavaWeb 了,包含(HTML、CSS、servlet、jsp等),Web 后可以做个 web 项目。之前都是为后面框架打基础,之后就会学习各种框架(如:Spring、SpringMVC、Mybatics 简称SSM等)。当框架学完后,这个时候会发现很得心应手。而在自学java过程一定要理论结合实践,多操作,在实践中才能发现问题,解决问题,这样才能提高。最后个人经验多说一点,看书自学实在很枯燥,可以看尚硅 谷的谷粒学院Java学习路线图和视频,需要学习哪些知识点也都写的非常清楚,都一一列出了,需要的可以搜来学习。
㈡ 设计一个JAVA类
public abstract class Vehicle{
String kind;
String color;
public void print(){
}
}
public class Truck extends Vehicle{
int load;
pulibc Truck(String kind,String color,int load){
kind = kind;
color = color;
load = load;
}
@Override
public void print(){
System.out.println("kind="+kind+",color="+color+",load="+load)
}
}
可代写,点头像 +++
㈢ Java编程设计
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.IOException;
import java.io.*;
public class chat {
public static void main(String[] args) {
new UDPMessage();
}
}
class UDPMessage extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private JTextArea recordText = new JTextArea();
private JTextArea sendText = new JTextArea();
private DatagramSocket ds;
private JButton btnSend = new JButton("发送");
private JButton btnExit = new JButton("关闭");
private JLabel otherTips = new JLabel("对方IP");
private JTextField otherIp = new JTextField();
private JLabel myTips = new JLabel("我的IP");
private JTextArea myIp = new JTextArea();
InputStreamReader in;
//创建一个文件输入流
OutputStreamWriter out;
//创建一个文件输出流
Container p;
JScrollPane jspRecord;
JMenuBar mb = new JMenuBar();
JMenu[] m = {new JMenu("文件"),
new JMenu("好友"),
new JMenu("背景")};
JMenuItem[][] mi = {{new JMenuItem("传送文件")},
{new JMenuItem("Regina"),new JMenuItem("Taotao"),new JMenuItem("LiShuo")},
{new JMenuItem("默
认"),new JMenuItem("浅灰色"),new JMenuItem("淡紫色"),new JMenuItem("黄绿色")}};
public UDPMessage() {
super("HiChat");
p = getContentPane();
setSize(550, 475);
centerOnScreen();
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for(int i=0; i<m.length; i++) {
mb.add(m[i]);
for(int j=0; j<mi[i].length; j++) {
m[i].add(mi[i][j]);
mi[i][j].addActionListener(this);
}
}
setJMenuBar(mb);
p.setBackground(new Color(218, 112, 214));
p.setLayout(null);
recordText.setEditable(false);
recordText.setLineWrap(true);
jspRecord = new JScrollPane(recordText);
jspRecord.setBounds(2, 5, 350, 270);
p.add(jspRecord);
sendText.setLineWrap(true);
JScrollPane jspSend = new JScrollPane(sendText);
jspSend.setBounds(2, 285, 350,100);
p.add(jspSend);
btnExit.setBounds(184,390,80,25);
btnExit.setMargin(new Insets(0, 0, 0, 0));
btnExit.addActionListener(this);
p.add(btnExit);
btnSend.setBounds(271,390,80,25);
btnSend.setMargin(new Insets(0, 0, 0, 0));
btnSend.addActionListener(this);
p.add(btnSend);
GridLayout gl = new GridLayout(2, 0);
gl.setVgap(15);
JPanel infoPane = new JPanel(gl);
infoPane.setOpa
㈣ java界面设计
我觉得,页面布局什么的,这个不用说了吧。。就是逻辑而已,点击“第一步”,判断有没有输入,如果有输入,判断是不是正整数,如果条件符合,那么第一格显示输入的值,然后第二格,处理下(其实就是for循环String,倒序)然后第三格=第一格+第二格的值;
第二步,同样获得第一步最后一个的和值,然后类似第一步。如下类似
㈤ Java 界面设计
import java.awt.GridBagLayout;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import java.awt.GridBagConstraints;
public class Test1 extends JPanel {
private static final long serialVersionUID = 1L;
private JSplitPane jSplitPane = null;
/**
* This is the default constructor
*/
public Test1() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.gridx = 0;
this.setSize(300, 200);
this.setLayout(new GridBagLayout());
this.add(getJSplitPane(), gridBagConstraints);
}
/**
* This method initializes jSplitPane
*
* @return javax.swing.JSplitPane
*/
private JSplitPane getJSplitPane() {
if (jSplitPane == null) {
jSplitPane = new JSplitPane();
}
return jSplitPane;
}
}
楼主是不是要这种的效果???
㈥ Java设计的就业前景好不好
1,市场:
首先java有非常广泛的应用市场,它的生态系统几乎涵盖了目前市面上所有的软硬件,java几乎是万能的,你能想到的,java基本都能实现(虽然吹的有点大,但不可否认)。
web开发:
能做大型的互联网网站如,京东,淘宝,人人网、去哪儿网、美团等。
java在开发高访问、高并发、集群化的大型网站方面有很大的优势。
移动端开发:
目前手机上所有的APP后台代码及部分移动端页面java是都能够做到的。
客户端开发:
主要面向政府、事业单位和大型企业,如医疗、学校、OA、邮箱、投票、金融、考试、物流、矿山等信息方面的系统。这些应用在我们生活中其实随处可见,比如医院的挂号系统、公司的打卡系统、物流系统等。
2,需求
软件工程是计算机领域发展最快的学科分支之一,国家非常重视软件行业的发展。对软件工程师人才的培养给予了非常优惠的政策。
在所有软件开发类人才的需求中对Java工程师的需求达到全部需求量的60~70%。
应该说Java软件工程师就业前景是非常好的,再加上Java软件工程师不仅IT专业企业需要,广大的非IT企业也需要,前景是非常乐观的。
3,稳定
第一个问题已经说过了,java是有一个庞大的生态系统,它的覆盖范围非常广,而且已经连续10几年位居开发语言的榜首,所以java是相对于其他语言来说,非常稳定的。
㈦ JAVA设计
一、概要
通常,需要单独的权限系统是解决授权的管理和维护,再分配等难题,不针对开发而言。
系统架构目标:在易于理解和管理,开发的前提下,满足绝大部分粗粒度和细粒度权限控制的功能需要。
除了粗粒度权限,系统中必然还会包括无数对具体Instance的细粒度权限。这些问题,被留给对框架的扩展方法来解决,这样的考虑基于以下两点:
1、细粒度的权限判断必须要在资源上获取权限分配的支持的上下文信息才可能得以实现。
2、细粒度的权限常常具有相当大的业务逻辑相关性。对不同的业务逻辑,常常意味着完全不同的权限判定原则和策略。相比之下,粗粒度的权限更具通用性,将其实现为一个架构,更有重用价值;而将细粒度的权限判断实现为一个架构级别的东西就显得繁琐,增加架构的复杂性。而且不是那么的有必要,用定制的代码来实现就更简洁,更灵活。否则会变成各种逻辑代码的堆砌。
比如,proct post数量的控制,这种一般要知道用户个性化的信息,付钱数量到数据库中查找最高数量,还要知道此用户已经有多少产品等,规则不具备通用性和重用性,
所以细粒度控制不应该放在权限架构层来解决。实例级的细粒度权限的解决方案就是将它转化为粗粒度权限,这样我们权限客户端就变得很简单了。
名词解释
粗粒度权限:一般可以通过配置文件来授权,授权只有真假,没有多少之分,不需要上下文的支持。不消耗资源的。
逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。
别名:静态授权、类级授权
细粒度权限:不能通过配置文件等表达,需要特定上下文的支持.
逻辑表达式:判断“When(Where)的时候,Who对What(Which)进行How的操作”的逻辑表达式是否为真。
别名:动态授权、实例级授权
设计原则:框架只提供粗粒度的权限。细粒度的权限也需要集中管理和维护,细粒度的权限通过定制的扩展代码将细粒度转化为粗粒度授权。
二、权限系统的设计
权限往往是一个极其复杂的问题, 设计权限系统第一个要解决的问题就是什么样的行为是需要权限控制,什么样的是业务方法。他们之间本来是没有明确的区分,任何权限从某种角度上说可以是一种业务方法。为了以后管理和开发方面我们从概念上需要将权限和业务明确划分清楚,指导开发。
权限控制行为: 对What(Which)进行How的操作需要区分Who,具有Who身份差异性和可替换性。 我们将此类操作作为权限。
特点: 可以收回也可以分配的,具有一定的抽象级别。 消耗资源,行为结果具备一些持久性的影响。
业务逻辑行为: 对What(Which)进行How的操作的时候与Who的身份无关或者具有Who身份差异性但 是不具有可替换性。
特点: 不能抽象和共享,很难回收和分配。不消耗资源,不产生持久性。现实中也存在某一时期行为是业务逻辑,最后演变成权限控制,或者相反的过程。
1、粗粒度权限设计
采用自主型访问控制方法,操作给予访问控制列表。每一个用户通过角色获得一组权限集合,权限系统的功能是验证用户申请的权限(集合)是否在这个集合当中,即申请的权限(集合)是否投影在用户拥有的权限集合,换句话说:只要某用户直接或者间接的属于某个Role那么它就具备这个Role的所有权限许可。
一个自主型访问控制方法的权限系统包括以下几个部分:角色、权限、访问控制表、
(1)权限
描述一个权限可以通过以下几个要素说明:
类型(class):
名称(name):
动作(actions):
掩码(mask):
属性:
具体权限Example:
1、Test
类型(class):com.yangjs.secutiry. permissions. TestPermission
名称(name):如:test.* ,test.sub.* ,test.sub1.sub2
动作(actions): brower_detail ,post,repost,……
掩码(mask):0x1,0x2,0x4…..
属性: 无
.…………..
l 存取控制器(my--acl.xml)配置
存取控制项(ACE):角色到权限的映射集合,表示某个角色可以在某些资源上执行某些动作,它们之间通过role关联(继承),ACE之间产生包含关系。
存取控制列表(ACL):ACE的集合。
我们的存取控制器(ACL)是通过一个xml的配置文件说明,存取控制列表由多个存取控制项(ACE)来描述。使用方法(略)
2、细粒度权限设计
细粒度授权需要上下文的支持,而且每个权限控制的上下问题都不一样,这由相关的业务逻辑决定,而且此类授权一般变化较快,应此需要将强的可维护性和扩展性,支持变化,但又不能够太复杂,否则缺乏可执行性。虽然此类权限个性化较强,我们仍然可以总结出很多共性:
(1) 几乎所有的授权需要用户的角色和ID.
(2) 特定的上下文几乎都同用户资源使用情况相关.
我们将此类信息称为UserState 即:User角色以及资源使用情况和当前状态。大部分信息我们在用户登陆的时候已经。获得。授权贯穿Web层和Biz层,因此我们的登陆要独立于Web端。因此上下文我们可以用UserState结合其他来抽象。
关于上下文的维护问题,我们不可能将UserState此类参数在Web层和Biz层来回传递,更加不能在需要授权的地方都加上一个这样的方法参数,这样不太现实。其次如果在授权的地方再从数据库中取一次这样虽然能够解决部分问题(不能解决userId的传递),这样效率太低,不能接受。
解决方法就是将此类信息cache起来,用的时候再去取,由于此类信息具有非常高的并发性,对线程安全较高,因此我们决定将此类信息放入一个线程上下文的内存cache中。此外我们由于引入cache,就需要解决所有cache共有的维护性问题。
Cache的生命周期:用户的一次请求,属于线程级,用户请求线程结束,Cache结束。
Cache的更新:当上下文信息发生变化是需要及时更新Cache,这是一个不可避免的步骤。
Cache丢失:发生在如系统down机,线程崩溃,内存溢出等等,对用户来说就是当前请求突然中断。
当用户重新发送请求,我们的系统就需要重新验证用户,此时我们可以更新Cache解决丢失问题。
Cache的清理:这个实现就是当用户请求结束,返回应答的时候清理,可以通过Filter实现,比较简单。
以上是相关的原理部分,我们看看系统地实现:
实现:线程上下文的cache
实现类:com.yangjs.cache.ThreadContextCache:
public class ThreadContextCache {
public static Map asMap();
public static boolean containsKey(Object key);
public static boolean containsValue(Object key);
public static Object get(Object key);
public static void put(Object key, Object value);
public static Object remove(Object key);
public static void clean();
public static int size() ;
public static void destroy()
是否可以解决您的问题?
㈧ 设计一个Java程序!
首先,既然是对文本操作,那么就要使用IO来进行文件读取的操作
第二,可以将文本中的内容一次性全部读出,放在一个变量中
第三,对变量进行业务处理
第四,对统计后的结果进行排序
难点在第三点,第三点的处理方式也比较灵活,可以用Map键值对的方式来存储,比如key存的是字母,value存的是次数;当然也可以用26个变量来存储a-z的次数,具体方式依照个人喜好进行编码
㈨ JAVA Web设计
业务性多态,就是要抽象Service层,然后每个实际业务做一个ServiceImpl
一般业务性多态也同时伴随Model的多态,同样的,从数据层就要抽象。
这个设计起来是很费脑子的,而且没看到实际的东西也没法给你建议,总的来说,代码方面要这么做:
Entity(产品基类),EntityExt1,EntityExt2……(实际产品类)
Service<Entity>,实现的时候实际是ServiceImpl<EntityExt>
哦对了,数据表其实同样应该设计成继承的样子(产品基础信息表和实际的不同类型的产品表)
㈩ 什么是JAVA设计范式
就是你不知道设计的参数是具体的那种类型。比如:public void method(T t){} 那么T就是不确定类型参数。他就是范式