java根据传入的参数实例化不同的对象

自己的写的代码中存在多个方法,类似这样。

public String a10100Process(String code) throws Exception {
        A10100Request a10100Request = SpringUtil.getBean( "A10100Request", A10100Request.class);
       ………………………………
        return a10100Request.toString();
    }

        public String a10101Process(String code) throws Exception {
        A10101Request a10101Request = SpringUtil.getBean( "A10101Request", A10101Request.class);
       ………………………………
        return a10101Request.toString();
    }

我如何能够做到通过传入不同的code,实例化不同的对象。

图片说明

换句话说红框中的内容是否是可以使用变量存储的,我自己试过使用Class.forName的方式获取到class是不能够作为类型来定义变量的。

4个回答

Class.forName是可以的,但是名字吆包含包名,要完整,要大小写匹配,要先加载对应的jar包(如果是外部的类)
https://blog.csdn.net/chang3247/article/details/72285923/
要注意私有构造函数/私有类的问题
https://blog.csdn.net/hexingen/article/details/79355193

其实很简单,一个共同的方法,通过传入的code来实例化不同的对象

public String a10100Process(String code) throws Exception {
        //你的code是不是已知的,就是固定是多少的?
                String str="";
                if(code.equles("a10100"))
                {
                         A10100Request a10100Request= SpringUtil.getBean( "A10100Request", A10100Request.class);
                         str= a10100Request.toString();
                }else if(code.equles("a10101"))
                {
                        A10101Request a10101Request = SpringUtil.getBean( "A10101Request", A10101Request.class);
                        str=a10101Request.toString();
                }
        return str;
    }

可以看出,您的A10100Request,A10101Request是类。是类就可以通过Class反射来设计。传递的参数可以用Class来实现分类。不一定非要用code。
public String ClassProcess(Class clazz) throws Exception {
Object obj = SpringUtil.getBean( clazz.getSimpleName(), clazz);
return obj.toString();
}

这不就是工厂模式吗。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何通过java的反射 修改对象的属性的值
我想写一个方法,对一个对象的值进行修改, 例如:有一个对象叫user,里面有name,age,两个属性,想在实例化对象,new user("a","1"); 我想用一个方法,只要传入参数的名字,就能修改参数的值,例如:传入age和"1岁",把原来的对象修改为user("a","1岁"); 不要调用对象的set方法,利用java的反射 应该怎么写呢? 小弟在此谢过,求解!
java 在无法创建对象的情况下如何利用反射为对象赋值?
我的教程里少一个工具类的方法: public void setField(Object 对象,String 方法名,Object 参数){ //传入一个对象,方法名,形参 通过反射为对象属性赋值 } 我写的时候发现无法实例化Object就无法为属性赋值。 请帮助我完成此方法或提供功能相同的工具类,Thanks♪(・ω・)ノ
请问下各位大佬们,我在用ksoap2-Android调用web service服务时出现了stream closed的报错
小弟仿照网上的一个例子想用web service服务写一个查询天气的安卓应用。 但是在该服务的第三个方法时出现了stream closed的错误,百度没有找到结果, 麻烦各位大神帮我看下,以下是我的代码,在根据城市获取城市具体天气情况这个 方法时报了错 提供服务的URL是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx ``` public class WebServicerUtil { // 定义Web Service的命名空间 static final String SERVICE_NS = "http://WebXml.com.cn/"; // 定义Web Service提供服务的URL static final String SERVICE_URL = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx"; // 调用远程 Web Service获取省份列表 public static List<String> getProvinceList() { /** * 调用远程Web Service的getRegionProvince方法: 获得中国省份、直辖市、地区和与之对应的ID * <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/"> <string>黑龙江,3113</string> <string>吉林,3114</string> <string>辽宁,3115</string> <string>内蒙古,3116</string> <string>河北,3117</string> <string>河南,3118</string> <string>山东,3119</string> <string>山西,31110</string> <string>江苏,31111</string> <string>安徽,31112</string> <string>陕西,31113</string> <string>宁夏,31114</string> <string>甘肃,31115</string> <string>青海,31116</string> <string>湖北,31117</string> <string>湖南,31118</string> <string>浙江,31119</string> <string>江西,31120</string> <string>福建,31121</string> <string>贵州,31122</string> <string>四川,31123</string> <string>广东,31124</string> <string>广西,31125</string> <string>云南,31126</string> <string>海南,31127</string> <string>新疆,31128</string> <string>西藏,31129</string> <string>台湾,31130</string> <string>北京,311101</string> <string>上海,311102</string> <string>天津,311103</string> <string>重庆,311104</string> <string>香港,311201</string> <string>澳门,311202</string> <string>钓鱼岛,311203</string> </ArrayOfString> */ String methodName = "getRegionProvince"; //获得中国省份、直辖市、地区和与之对应的ID // 创建HttpTransportSE传输对象,该对象用于调用Web Service操作 HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; // 使用SOAP1.1协议创建Envelop对象 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); // 实例化SoapObject对象,传入所要调用的Web Service的命名空间,Web Service方法名 SoapObject soapObject = new SoapObject(SERVICE_NS, methodName); //将 soapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息 envelope.bodyOut = soapObject; /** * 因为什么这个网站是通过.NET对外提供Web Service的, * 因此设置与.Net提供的Web Service保持较好的兼容性 */ envelope.dotNet = true; try { // 调用Web Service ht.call(SERVICE_NS + methodName, envelope); if (envelope.getResponse() != null) { // 获取服务器响应返回的SOAP消息 SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty(methodName + "Result"); // 解析服务器响应的SOAP消息。 return parseProvinceOrCity(detail); } } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return null; } // 根据省份获取城市列表 public static List<String> getCityListByProvince(String province) { /** * 调用的方法 * 获得支持的城市/地区名称和与之对应的ID 输入参数:theRegionCode = 省市、国家ID或名称,返回数据:一维字符串数组。 如:输入北京的theRegionCode:311101得到的返回结果为: <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/"> <string>北京,792</string> <string>昌平,785</string> <string>大兴,826</string> <string>房山,827</string> <string>怀柔,752</string> <string>门头沟,788</string> <string>密云,751</string> <string>平谷,756</string> <string>顺义,741</string> <string>通州,3409</string> <string>延庆,746</string> <string>海淀,742</string> <string>朝阳,3408</string> <string>丰台,795</string> <string>石景山,794</string> </ArrayOfString> */ String methodName = "getSupportCityString"; // 创建HttpTransportSE传输对象 HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; // 实例化SoapObject对象 SoapObject soapObject = new SoapObject(SERVICE_NS, methodName); // 添加一个请求参数 soapObject.addProperty("theRegionCode", province); // 使用SOAP1.1协议创建Envelop对象 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.bodyOut = soapObject; // 设置与.Net提供的Web Service保持较好的兼容性 envelope.dotNet = true; try { // 调用Web Service ht.call(SERVICE_NS + methodName, envelope); if (envelope.getResponse() != null) { // 获取服务器响应返回的SOAP消息 SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty(methodName + "Result"); // 解析服务器响应的SOAP消息。 return parseProvinceOrCity(detail); } } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return null; } // 解析服务器响应的SOAP消息。 private static List<String> parseProvinceOrCity(SoapObject detail) { List<String> result = new ArrayList<String>(); for (int i = 0; i < detail.getPropertyCount(); i++) { // 解析出每个省份 result.add(detail.getProperty(i).toString().split(",")[0]); } return result; } // 根据城市获取城市具体天气情况 public static SoapObject getWeatherByCity(String cityName) { String methodName = "getWeather"; HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); SoapObject soapObject = new SoapObject(SERVICE_NS, methodName); soapObject.addProperty("theCityCode", cityName); envelope.bodyOut = soapObject; // 设置与.Net提供的Web Service保持较好的兼容性 envelope.dotNet = true; try { ht.call(SERVICE_NS + methodName, envelope); SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty(methodName + "Result"); return detail; } catch (Exception e) { e.printStackTrace(); } return null; } } ``` 下边是报错内容 ``` 2019-12-22 15:35:47.617 29228-29259/? W/System.err: java.io.IOException: Stream closed 2019-12-22 15:35:47.617 29228-29259/? W/System.err: at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:151) 2019-12-22 15:35:47.617 29228-29259/? W/System.err: at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 2019-12-22 15:35:47.617 29228-29259/? W/System.err: at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) 2019-12-22 15:35:47.617 29228-29259/? W/System.err: at java.io.BufferedInputStream.read(BufferedInputStream.java:334) 2019-12-22 15:35:47.618 29228-29259/? W/System.err: at org.ksoap2.transport.HttpTransportSE.readDebug(HttpTransportSE.java:299) 2019-12-22 15:35:47.618 29228-29259/? W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:261) 2019-12-22 15:35:47.618 29228-29259/? W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118) 2019-12-22 15:35:47.618 29228-29259/? W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113) 2019-12-22 15:35:47.619 29228-29259/? W/System.err: at com.example.weather.WebServicerUtil.getWeatherByCity(WebServicerUtil.java:205) 2019-12-22 15:35:47.619 29228-29259/? W/System.err: at com.example.weather.MyWeather.showWeather(MyWeather.java:147) 2019-12-22 15:35:47.619 29228-29259/? W/System.err: at com.example.weather.MyWeather.access$200(MyWeather.java:21) 2019-12-22 15:35:47.619 29228-29259/? W/System.err: at com.example.weather.MyWeather$3$1.run(MyWeather.java:125) 2019-12-22 15:35:47.619 29228-29259/? W/System.err: at java.lang.Thread.run(Thread.java:761) 2019-12-22 15:35:47.619 29228-29259/? E/AndroidRuntime: FATAL EXCEPTION: Thread-4 Process: com.example.weather, PID: 29228 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object org.ksoap2.serialization.SoapObject.getProperty(int)' on a null object reference at com.example.weather.MyWeather.showWeather(MyWeather.java:150) at com.example.weather.MyWeather.access$200(MyWeather.java:21) at com.example.weather.MyWeather$3$1.run(MyWeather.java:125) at java.lang.Thread.run(Thread.java:761) 2019-12-22 15:35:47.684 29228-29251/? D/EGL_emulation: eglMakeCurrent: 0xa26a6a60: ver 3 0 (tinfo 0xa461a8d0) ```
spring AOP中如何给通知传递参数
我想在不修改原对象代码的情况下,插入对域模型的数据搜集方法,需要传入1个参数。 例如:病人信息(PatientInfo)与病人信息操作日志(PatientInfoOperationLog),二者存在一对多的关系。 ORM映射配置中采用了级联,病人信息操作日志为被动插入操作。 在CreatePatientAction中采集病人信息的数据,并对病人信息执行显式的save。 这样看来,病人信息操作日志的信息与Action并没有什么关联,可以视为独立运作单元;而且,如果以后不打算采用这个日志的时候,可以修改配置直接修改或删除AOP和ORM映射配置就可以了。 前段时间考虑过spring是否可以注入方法,经过讨论发现是不可行的。这样我打算使用AOP,但我尝试了AOP配置,在没有传递参数的情况下,可以正常执行通知。但我需要配置2个对象之间的关系,不得不传入病人信息作为参数来完成任务,但不知道怎么配置这个参数。 我尝试过加入arg-names属性,但服务器启动时就报错,没加这个属性也会报错,因为通知调用的方法是有参数的。 而且还有个疑问,这个参数是否可以是一个已经实例化的引用?我需要的是这个引用,而不能是新创建的对象,因为这没有意义。 我的配置如下,这里是没有加arg-names属性: <aop:config> <aop:pointcut id="createPatient" expression="execution(* patient.base.action.CreatePatientAction.execute(..)) " /> <aop:aspect id="patientInfoLogPluginAspect" ref="patientInfoLogPlugin"> <aop:before pointcut-ref="createPatient" method="plugin" /> </aop:aspect> </aop:config> <bean id="patientInfoLogPlugin" class="patient.base.action.assit.PatientInfoOpeLogPlugin" /> PatientInfoOpeLogPlugin类代码如下: public void plugin(PatientInfo patientInfo){ log.setOperation(defaultOperation); log.setOperateTime(this.now()); log.setOperator("admin"); log.setPatientInfo(patientInfo); Set <PatientInfoOperationLog> logSet= new HashSet <PatientInfoOperationLog>(); logSet.add(log); patientInfo.setOperationLog(logSet); } 服务器启动错误概要信息如下: 有没有配置arg-names的情况都一样: …… Constructor threw exception; nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut …… [b]问题补充:[/b] 请一楼给个例子我试试,谢谢! [b]问题补充:[/b] [size=small][color=blue]三楼whistler的例子是标准例子。看后我考虑了一下,如果对Service类的相关方法进行拦截,确实可以达到我想要的结果,而且还可以不受Struts2的自带拦截器影响。其实,我原来的想法集中在如何让AOP拦截Action了,但后来经过查询资料和测试,发现无法达到,因为Struts2本身也对Action做了处理,与AOP的拦截发生了冲突。如果不拦截Action,就没有这个问题了。 谢谢你、谢谢大家的回复![/color][/size]
JAVA this问题 求详细解答
compareTo()方法中的 if(this.getAge()>stu.getAge()) 的this.getAge()指的是?实例化对象传入的参数不都是stu.getAge() 我想了好久都不知道这个this表示什么 import java.util.Arrays; import java.util.Comparator; public class Student implements Comparable<Student>{ //就简单点按年龄大小排序 private int age; Student(){ this.age = 0; } Student(int age){ this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Student stu) { if(this.getAge()>stu.getAge()){ return 1; }else if(this.getAge()<stu.getAge()){ return -1; }else{ return 0; } } public static void main(String[] args) { Student stu[] = new Student[3]; stu[0] = new Student(2); stu[1] = new Student(1); stu[2] = new Student(3); Arrays.sort(stu);
请大神帮我看看这个java程序怎么运行不了,帮我调一调这个程序,谢谢
是这个错误Exception in thread "main" java.lang.Error: Unresolved compilation problem: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class javacode { public static void main(String[] args) throws IOException { ArrayList<Clerk> al = new ArrayList<Clerk>(); Clerk c1 = new Clerk("宋江", 50, 1000); al.add(c1);//添加到尾部 Clerk c3 = new Clerk("吴用", 45, 2000); al.add(c3);//添加到尾部 al.add(c3);//可以加相同的对象 System.out.println("al.lenght=" + al.size()); Clerk c2 = new Clerk("武松", 30, 10004.4f); al.add(0, c2);//加到指定位置,原来的会往看推 al.remove(3);//删除相应的对象 //System.out.println(al.get(1).getName()); for(Clerk c : al){ //System.out.println(c.getName()); } } ClerkManage cm=new ClerkManage(); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); while(true){ System.out.println("——————欢迎使用职员管理系统————————"); System.out.println("请选择你要进行的操作:"); System.out.println("1.添加一个职员:"); System.out.println("2.查找一个职员:"); System.out.println("3.修改一个职员的工资:"); System.out.println("4.删除一个职员:"); System.out.println("5.退出!"); String operType=br.readLine(); if(operType.equals("1")){ System.out.println("请输入职员的编号:"); String no=br.readLine(); System.out.println("请输入职员的姓名:"); String name=br.readLine(); Clerk ck=new Clerk(no,name); //添加职员 cm.addClerk(ck); } else if(operType.equals("5")){ System.exit(0); } }//while } class Clerk { //定义4个私有的属性 private String id; private String name; private String duty; private double salary; //带参数的构造方法 public Clerk(String id, String name) { this.id = id; this.name = name; } //为4个私有属性提供公开的取值和赋值方法,也是就算get和set方法 public Clerk(String string, int i, float f) { // TODO Auto-generated constructor stub } public void addClerk() { // TODO Auto-generated method stub } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDuty() { return duty; } public void setDuty(String duty) { this.duty = duty; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } } class ClerkManage { ArrayList<Clerk>al = null;//声明了一个变量名为 al 且为空的ArrayList集合 //无参构造方法 public ClerkManage() { //实例化一个ArrayList ArrayList<Clerk> al = new ArrayList<Clerk>(); } //添加方法,把传入的Clerk添加到集合中 public void addClerk(Clerk clerk){ al.add(clerk); } // if not found return null // 根据传入的id在ArrayList中查找Clerk public Clerk searchClerk(String id){ Clerk clerk = null;//用来装找到的Clerk for(Clerk clerkTmp : al) { //判断传入的id 是否在集合里面找的到 if(id.equals(clerkTmp.getId())) { clerk = clerkTmp; //跳出循环 break; } }//返回结果 return clerk; } //给员工设置工资的方法 //id 员工id // salary 要设置的工资多少 public void setSalaryOfClerk(String id, double salary){ //查找员工根据id 并返回一个类 Clerk clerk = searchClerk(id); //判断是否有该员工 if(clerk != null) { //如果有 设置工资 clerk.setSalary(salary); } else { //没找到 提示用户 System.out.println("找不到员工编号:" + id); } } //删除员工 根据id public void deleteClerk(String id){ //循环遍历al for(int i = 0, size = al.size(); i < size; i++) { //判断是有存在该id if(id.equals(al.get(i).getId())) { //如果存在该 删除该员工 al.remove(i); al.remove(i); //跳出循环 break break; } } } } }
RecyclerView中点击item跳转到其他Activity并显示item内容如何实现?
适配器代码 ``` package com.example.uilayout.adapter; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.uilayout.R; import com.example.uilayout.model.Msg; import java.util.List; /** * Created by 夏雨来 on 2018/11/20. */ public class MsgListAdapter extends RecyclerView.Adapter<MsgListAdapter.viewHolder> { private List<Msg> msgList; //1、创建构造函数 //构造函数参数是list的集合,他是rv直接的数据来源 //在做Adapter实例化的时候必须传入list的集合数据 public MsgListAdapter(List<Msg> msgList) { this.msgList = msgList; } //2、创建类ViewHolder(视图容器),承载的是条目中的控件 //做条目中控件的声明和绑定 class viewHolder extends RecyclerView.ViewHolder{ ImageView iv_head; TextView tv_friend; TextView tv_message; TextView tv_time; View itemView; public viewHolder(View itemView) { super(itemView); //itemView的值由一步一步传递过来的 this.itemView=itemView; iv_head=itemView.findViewById(R.id.iv_head); tv_friend=itemView.findViewById(R.id.tv_friend); tv_message=itemView.findViewById(R.id.tv_message); tv_time=itemView.findViewById(R.id.tv_time); } } //创建ViewHolder对象 // @Override public viewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View itemView = View.inflate(viewGroup.getContext(),R.layout.item_msglist,null); viewHolder holder=new viewHolder(itemView); return holder; } //给ViewHolder中的控件设置数据 @Override public void onBindViewHolder(final viewHolder viewHolder, final int i) { final Msg msg = msgList.get(i); viewHolder.iv_head.setImageResource(msg.getImage_head()); viewHolder.tv_friend.setText(msg.getFriend()); viewHolder.tv_message.setText(msg.getMessage()); viewHolder.tv_time.setText(msg.getTime()); //设置条目中的点击监听 viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(view.getContext(), "你想与" + msg.getFriend() + "聊天", Toast.LENGTH_SHORT).show(); // TextView friendView=view.findViewById(R.id.tv_friend); // Intent intent=new Intent(); // Intent intent=new Intent(mContext,ChatActivity.class); // intent.putExtra("friend",msg.getFriend().toString()); // mContext.startActivity(intent); } }); //设置条目中具体控件的点击监听 // viewHolder.iv_head.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View view) { // Toast.makeText(view.getContext(), "你点击了"+msg.getFriend()+"头像", Toast.LENGTH_SHORT).show(); // } // }); } @Override public int getItemCount() { return msgList.size(); } } ``` Activity代码 ``` package com.example.uilayout.activity; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import com.example.uilayout.model.Msg; import com.example.uilayout.adapter.MsgListAdapter; import com.example.uilayout.R; import com.example.uilayout.utils.MySQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class MsgListActivity extends AppCompatActivity { RecyclerView rv; List<Msg> msgList = new ArrayList<>(); // TextView friend; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_msglist); rv = findViewById(R.id.rv); // friend =findViewById(R.id.tv_friend); //给rv设置线性布局 rv.setLayoutManager(new LinearLayoutManager(this)); //初始化List集合数据 // initList(msgList); initListFromDB(); //给rv设置适配器 rv.setAdapter(new MsgListAdapter(msgList)); // MySQLiteOpenHelper helper=new MySQLiteOpenHelper(this,"wechat",null,1); // SQLiteDatabase db=helper.getWritableDatabase(); } public void initListFromDB() { MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "wechat", null, 1); SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.query("msg", null, null, null, null, null, null); while (cursor.moveToNext()) { int headImageSrc = cursor.getInt(cursor.getColumnIndex("headImageSrc")); String friend = cursor.getString(cursor.getColumnIndex("friend")); String message = cursor.getString(cursor.getColumnIndex("message")); String time = cursor.getString(cursor.getColumnIndex("time")); Msg msg = new Msg(headImageSrc, friend, message, time); msgList.add(msg); } } } ``` 布局文件 ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:descendantFocusability="blocksDescendants" > <ImageView android:id="@+id/iv_head" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/a" android:layout_marginTop="5dp" android:layout_marginLeft="10dp" android:onClick="click" /> <TextView android:id="@+id/tv_friend" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="小张" android:textSize="20sp" android:textColor="#000" android:layout_toRightOf="@+id/iv_head" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:onClick="click" /> <TextView android:id="@+id/tv_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="你在干嘛" android:textSize="15sp" android:lines="1" android:layout_alignLeft="@+id/tv_friend" android:layout_marginTop="40dp" android:onClick="click" /> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="21:00" android:textSize="15sp" android:layout_alignTop="@+id/tv_friend" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:onClick="click" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#C0C0C0" android:layout_alignLeft="@+id/iv_head" android:layout_alignRight="@+id/tv_time" android:layout_marginTop="74dp" /> </RelativeLayout> ``` 未跳转时界面 ![未跳转时界面](https://img-ask.csdn.net/upload/201812/23/1545574749_907427.png) 效果,点击item跳转到另一个界面之后,界面显示与XX聊天,XX是由item中获取的 ![效果,点击item跳转到另一个界面之后,界面显示与XX聊天,XX是由item中获取的](https://img-ask.csdn.net/upload/201812/23/1545574974_525413.png)
在elipse上导入hibernate框架出现问题
在一开始导入hibernate框架时,导入了hibernate全部的包和c3p0数据源的包,结果在包名上产生了冲突, eclipse无法自动正确导入,把鼠标移到 import org.hibernate*.;时出现 the package org.hibernate is accessible from more than one module:hibernate.c3p0, hibernate.commons.annotations,hibernate.core; 当我把有冲突的包移除几个暂时不用的时候,没有编译错误,但运行的时候出现java.lang.NoClassDefFoundError 具体如下 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43) at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87) at org.hibernate.cfg.Configuration.<init>(Configuration.java:123) at org.hibernate.cfg.Configuration.<init>(Configuration.java:118) at lee.NewsManager.main(NewsManager.java:30) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more 具体代码如下: ```package lee; import org.hibernate.*; import org.hibernate.cfg.*; import org.hibernate.service.*; import org.hibernate.boot.registry.*; import org.crazyit.app.domain.New; public class NewsManager { public static void main(String[] args) throws Exception { // 实例化Configuration Configuration conf = new Configuration() // 不带参数的configure()方法默认加载hibernate.cfg.xml文件 // 如果传入abc.xml作为参数,则不再加载hibernate.cfg.xml,改为加载abc.xml .configure(); // 以Configuration实例创建SessionFactory实例 SessionFactory sf = conf.buildSessionFactory(); // 创建Session Session sess = sf.openSession(); // 开始事务 Transaction tx = sess.beginTransaction(); // 创建消息对象 New n = new New(); n.setContent( + "100"); sess.save(n); // 提交事务 tx.commit(); // 关闭Session sess.close(); sf.close(); } } package org.crazyit.app.domain; import java.util.ArrayList; import java.util.List; import javax.annotation.processing.Generated; import javax.persistence.CollectionTable; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OrderColumn; import javax.persistence.Table; import javax.persistence.TableGenerator; @Entity @Table(name="news_inf") public class New { @TableGenerator(name="newsGen",table="NEWS_ID_GEN",pkColumnName="gen_key",valueColumnName="gen_value",pkColumnValue="new_id") @GeneratedValue(strategy=GenerationType.TABLE,generator="newsGen") private Integer id; // 消息标题 private String title; // 消息内容 private String content; @ElementCollection (targetClass=String.class) @CollectionTable(name="school_inf",joinColumns=@JoinColumn(name="person_id",nullable=false)) @Column(name="school_name") @OrderColumn(name="list_order") private List<String>schools=new ArrayList<>(); @ElementCollection (targetClass=Float.class) @CollectionTable(name="score_inf",joinColumns=@JoinColumn(name="person_id",nullable=false)) @MapKeyColumn(name="subject_name") @MapKeyClass(String.class) @Column(name="mark") // id的setter和getter方法 public void setId(Integer id) { this.id = id; } public Integer getId() { return this.id; } // title的setter和getter方法 public void setTitle(String title) { this.title = title; } public String getTitle() { return this.title; } @Generated(GenerationTime.ALWAYS) @Column(name="full_content") private String fullContent; // content的setter和getter方法 public void setContent(String content) { this.content = content; } public String getContent() { return this.content; } } 配置文件<?xml version="1.0" encoding="GBK"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 指定连接数据库所用的驱动 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 指定连接数据库的url,其中hibernate是本应用连接的数据库名 --> <property name="connection.url">jdbc:mysql://localhost/hibernate?useSSL=true</property> <!-- 指定连接数据库的用户名 --> <property name="connection.username">root</property> <!-- 指定连接数据库的密码 --> <property name="connection.password">ak474247152919</property> <!-- 指定连接池里最大连接数 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定连接池里最小连接数 --> <property name="hibernate.c3p0.min_size">1</property> <!-- 指定连接池里连接的超时时长 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 指定连接池里最大缓存多少个Statement对象 --> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">true</property> <!-- 指定数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 根据需要自动创建数据表 --> <property name="hbm2ddl.auto">update</property><!--①--> <!-- 显示Hibernate持久化操作所生成的SQL --> <property name="show_sql">true</property> <!-- 将SQL脚本进行格式化后再输出 --> <property name="hibernate.format_sql">true</property> <!-- 罗列所有持久化类的类名 --> <mapping class="org.crazyit.app.domain.News"/> </session-factory> </hibernate-configuration> ```
关于加密的以下代码为什么无法在安卓4.2.2上正常工作
完整代码如下 package com.example.test; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ScrollView; import android.widget.TextView; public class MainActivity extends Activity { private EditText E1; private TextView T1,T2; private Button B1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); E1 = (EditText)findViewById(R.id.E1); T1 = (TextView)findViewById(R.id.T1); T2 = (TextView)findViewById(R.id.T2); B1 = (Button)findViewById(R.id.B1); B1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String S1=E1.getText().toString(); T1.setText(S1); try{ String scode; byte[] btest,braw,bseed,bencode; String seedkey="123"; bseed = seedkey.getBytes("utf-8"); braw = getRawKey(bseed); String tobyte = E1.getText().toString(); btest = tobyte.getBytes("utf-8"); bencode = encry(braw, btest); scode = new String(bencode,"ISO8859-1"); //加密完成,以下开始解密 byte[] bdecodetext,bdecoderaw,bdecodeseed,bdecode; String sdecodekey = "123"; bdecodeseed = sdecodekey.getBytes("utf-8"); bdecoderaw = getRawKey(bdecodeseed); bdecodetext = scode.getBytes("ISO8859-1"); bdecode = decry(bdecoderaw,bdecodetext); String text1 = new String(bdecode,"utf-8"); T2.setText(text1); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private byte[] getRawKey(byte[] seed) throws NoSuchAlgorithmException{ SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); // 获得一个随机数,传入的参数为默认方式。 sr.setSeed(seed); // 设置一个种子,这个种子一般是用户设定的密码。也可以是其它某个固定的字符串 KeyGenerator keyGen = KeyGenerator.getInstance("AES"); // 获得一个key生成器(AES加密模式) keyGen.init(128, sr); // 设置密匙长度128位 SecretKey key = keyGen.generateKey(); // 获得密匙 byte[] raw = key.getEncoded(); // 返回密匙的byte数组供加解密使用 return raw; } private byte[] encry(byte[] raw, byte[] input) throws Exception { // 加密 SecretKeySpec keySpec = new SecretKeySpec(raw, "AES"); // 根据上一步生成的密匙指定一个密匙(密匙二次加密?) Cipher cipher = Cipher.getInstance("AES"); // 获得Cypher实例对象 cipher.init(Cipher.ENCRYPT_MODE, keySpec); // 初始化模式为加密模式,并指定密匙 byte[] encode = cipher.doFinal(input); // 执行加密操作。 input为需要加密的byte数组 return encode; // 返回加密后的密文(byte数组) } private byte[] decry(byte[] raw, byte[] encode) throws Exception{ // 解密 SecretKeySpec keySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, keySpec); // 解密的的方法差不多,只是这里的模式不一样 byte[] decode = cipher.doFinal(encode); // 加解密都通过doFinal方法来执行最终的实际操作 return decode; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } /*同样在Genymotion的虚拟机软件上测试,创建的Nexus S 4.1.1上最后就可以在T2上输出出来,在Galaxy Nexus 4.2.2上T2的内容就无法输出,以前完整的工程在实体机一台HTC的4.0.4机器上也能正确运行,但在一台华为4.2.2上就无法得出正确结果*/
小弟请教Struts2+JSON的集合传递
<p> </p> <p>我在前端写这样一段:</p> <p> </p> <p> </p> <pre name="code" class="java">//获取表单值,并以json的数据形式保存到params中 var params = { list : [ { "name" : "小明", "age" : 12 }, { "name" : "小红", "age" : 14 } ] } //使用$.post方式 $.post(url, //服务器要接受的url params, //传递的参数 function cbf(data) { //alert(data); }, 'json' //返回的类型 ); });</pre> <p> 在url提交到的Action为:</p> <p> </p> <p> </p> <pre name="code" class="java">public class AjaxLoginAction extends ActionSupport { private List list; public List getList() { return list; } public void setList(List list) { this.list = list; } }</pre> <p> </p> <p> </p> <p>我打印list的size() 的个数为2</p> <p> </p> <p>这个list里面放的是2个什么对象?</p> <p> </p> <p>可是我怎么遍历出"小红"和"小明"</p> <p> </p> <p>我写了个Student Class有Name和Age属性</p> <p>(List&lt;Student&gt;)list   没有用..</p> <p>换成数组也没用...</p> <p> </p> <p>JSON反序列化?   我知道<span style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; line-height: 18px; background-color: #fafafa;">JSONObject.fromObject(String);  可是</span>怎么得到参数字符串 </p> <p> </p> <p> </p> <p>小白求指教...  希望各位能给个实例代码学习</p> <p> </p> <p> </p>
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
源码阅读(19):Java中主要的Map结构——HashMap容器(下1)
(接上文《源码阅读(18):Java中主要的Map结构——HashMap容器(中)》) 3.4.4、HashMap添加K-V键值对(红黑树方式) 上文我们介绍了在HashMap中table数组的某个索引位上,基于单向链表添加新的K-V键值对对象(HashMap.Node&lt;K, V&gt;类的实例),但是我们同时知道在某些的场景下,HashMap中table数据的某个索引位上,数据是按照红黑树
c++制作的植物大战僵尸,开源,一代二代结合游戏
    此游戏全部由本人自己制作完成。游戏大部分的素材来源于原版游戏素材,少部分搜集于网络,以及自己制作。 此游戏为同人游戏而且仅供学习交流使用,任何人未经授权,不得对本游戏进行更改、盗用等,否则后果自负。 目前有六种僵尸和六种植物,植物和僵尸的动画都是本人做的。qq:2117610943 开源代码下载 提取码:3vzm 点击下载--&gt; 11月28日 新增四种植物 统一植物画风,全部修
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
深度学习图像算法在内容安全领域的应用
互联网给人们生活带来便利的同时也隐含了大量不良信息,防范互联网平台有害内容传播引起了多方面的高度关注。本次演讲从技术层面分享网易易盾在内容安全领域的算法实践经验,包括深度学习图
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程实用技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法,并会持续更新。
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
前言 GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 上周给大家分享了一篇10个让你笑的合不拢嘴的Github项目,而且还拿了7万+个Star哦,有兴趣的朋友,可以看看, 印象最深刻的是 “ 呼吸不止,码字不停 ”: 老实交代,你是不是经常准备写个技术博客,打开word后瞬间灵感便秘,码不出字? 有什么
推荐几款比较实用的工具,网站
1.盘百度PanDownload 这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风????) 不要去某站买付费的???? PanDownload下载地址 2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了 bejson网站 3.二维码美化 这个网站的二维码美化很好看,网站界面也很...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
Spring Security 实战干货:基于注解的接口角色访问控制
1. 前言 欢迎阅读 Spring Security 实战干货[1] 系列文章 。在上一篇 基于配置的接口角色访问控制[2] 我们讲解了如何通过 javaConfig 的方式配置接口的角色访问控制。其实还有一种更加灵活的配置方式 基于注解 。今天我们就来探讨一下。DEMO 获取方式在文末。 2. Spring Security 方法安全 Spring Security 基于注解的安全...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问

相似问题

14
【JAVA】将参数传入方法,方法内改变了值,出来后又变成null????
4
关于JAVA调用C++编写的DLL的问题
2
Java中怎么通过参数传递把九九乘法表变成八八、七七等乘法表
3
java 如何模拟带参数模拟搜索网站数据
6
java开发中关于传递String那些参数的问题
8
使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码
2
如何在java里调用使用get方法,参数以application/x-www-form-urlencoded方式传递的web接口?
1
.net 调用java 写的service接口,应该怎么传入参数
3
Java什么情况下方法会改变传递给它的参数变量的内容?
2
jna调用dll,如何获取lpstr类型的传出参数
5
java:当参数Object A传递到方法B(Object A1)时,A1是否又分配了一块堆内存
0
Struts2中怎么将一个表单中的参数的值传入值栈?
4
新入行小白了解谈java面向对象的三大属性有些疑惑,还望各路大神指教教导一下
2
如何用RestTemplate同时传递一个Java对象和基本类型的参数?
2
mybatis调用存储过程,传入的参数有一个是动态生成了,这个时候会报索引超出范围,如何解决?
2
为什么Java在传递路径字符串时,显示为空指针?
2
xposed 调用callMethod 碰到接口作为参数 如何传递对象
2
spring boot如何把header中参数映射到controller中方法的自定义对象上?
2
有没有java对象的属性或方法用变量值代替的语法,就像js一样
1
java的面向流和面向缓冲区