map.get() 到的引用变量能不能直接修改?
public static void main(String[] args) {
    Map<String, List<String>> map = new HashMap<>();
    map.put("str1", Arrays.asList("aa","bb"));
    System.out.println(map.get("str1"));
    map.get("str1").add("cccc");  // 1
    System.out.println(map.get("str1"));

    List<String> list = new ArrayList<>(map.get("str1"));
    list.add("dddd"); // 2
    map.put("str1",list);
    System.out.println(map.get("str1"));

    map.get("str1").add("cccc"); // 3
    System.out.println(map.get("str1"));
  }

目前这段代码执行到 1 会报错;
但是把1注释掉就能正常运行(1和3是一样的),不知道为什么先2再3 就没问题了
用的java8,是因为一开始的map里的value和后来更新过的有什么不一样???

1个回答

看看这个:https://www.cnblogs.com/liuyh17211/p/3250365.html

Arrays.asList返回的List与new ArrayList生成的List是有区别的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java批量数据导出多个excel,为什么老是只生成一个excel文件
public void exportexcel(HttpServletRequest request, HttpServletResponse response) throws Exception { // 为模板中变量赋值 // 传递模板地址和要操作的页签 ExcelExp excel = new XssExcelExp("../../excel/volunteer.xlsx", 0); VolunteerFormMap volunteerFormMap = findHasHMap(VolunteerFormMap.class); volunteerFormMap.put("mapper_id","VolunteerMapper.findvolunteer"); List<Map<String, Object>> lists = baseService.findByAll(volunteerFormMap); for (Map<String, Object> map2 : lists) { Map<String, String> map1 = new HashMap<String, String>(); map1.put("name", (String) map2.get("name")); map1.put("gender", (String) map2.get("gender")); map1.put("education", (String) map2.get("education")); map1.put("politicalAff", (String) map2.get("political_aff")); map1.put("workUnit", (String) map2.get("work_unit")); map1.put("unitAddress", (String) map2.get("unit_address")); map1.put("address", (String) map2.get("address")); map1.put("phoneNumber", (String) map2.get("phoneNumber")); map1.put("idNumber", (String) map2.get("id_number")); map1.put("hobby", (String) map2.get("hobby")); map1.put("contactInfo", (String) map2.get("contact_info")); map1.put("introducer", (String) map2.get("introducer")); map1.put("partinTime", (String) map2.get("partin_time")); excel.replaceExcelData(map1); // 导出,此处只封装了浏览器下载方式 // 调用downloadExcel,返回输出流给客户端 String fileName = (String) map2.get("name") + ".xlsx"; excel.downloadExcel(response, fileName); } } public void downloadExcel(HttpServletResponse response, String filaName) throws IOException { String encodeFileName = URLEncoder.encode(filaName, "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + encodeFileName); //response.setHeader("Accept-Ranges", "bytes"); ServletOutputStream out = response.getOutputStream(); xssWb.write(out); out.flush(); out.close(); }
Struts2版本.不能接收小写变量名为shr的数据值,
我使用Map作为我的接收容器,shr是一个key. <br />当我通过地址: http://localhost:9999/ta/aa/test.do?map.shr=feng 来传递数据时. <br />问题: 打印不出shr参数.的值.这是为什么? 大写可以接收的 <br />为什么map接收不了shr属性值呢,其它的属性都能接收. <br /> <br /><pre name="code" class="java">public class TestAction{ public Map&lt;string,string&gt; map = new HashMap&lt;string,string&gt;(); public Map getMap()//.....set and get.. public String view(){ System.out.println(this.map); //打印不出shr属性 return ""; } } public class TestAction{ public Map&lt;string,string&gt; map = new HashMap&lt;string,string&gt;(); public String view(){ System.out.println(this.map); //打印不出shr属性 return ""; } }</pre>为什么map接收不了shr属性呢,其它的属性都能接收.
如何在Service层获取用户session中保存的用户信息的方法
这是我在网上找到的一段保存UserSession的java代码。 [code="java"] /** * * Description: 用ThreadLocal提供一个存储线程内变量的地方. <p/> * 客户端代码可以用静态方法存储和获取线程内变量,不需要依赖于HttpSession. * web层的Controller可通过此处向business层传入user_id之类的变量 * */ @SuppressWarnings("unchecked") public class UserSession { /** * 保存变量的ThreadLocal,保持在同一线程中同步数据. */ private static final ThreadLocal SESSION_MAP = new ThreadLocal(); /** * 工具类的protected构造方法. */ protected UserSession() { } /** * 获得线程中保存的属性. * * @param attribute * 属性名称 * @return 属性值 */ public static Object get(String attribute) { Map map = (Map) SESSION_MAP.get(); System.out.println(map.toString()); System.out.println(map.containsKey("usersession")); return map.get(attribute); } /** * 获得线程中保存的属性,使用指定类型进行转型. * * @param attribute * 属性名称 * @param clazz * 类型 * @param <T> * 自动转型 * @return 属性值 */ public static <T> T get(String attribute, Class<T> clazz) { return (T) get(attribute); } /** * 设置制定属性名的值. * * @param attribute * 属性名称 * @param value * 属性值 */ public static void set(String attribute, Object value) { Map map = (Map) SESSION_MAP.get(); if (map == null) { map = new HashMap(); SESSION_MAP.set(map); } map.put(attribute, value); } } [/code] 我在用户登录的时候 执行: [code="java"] UserSession.set("User",User); [/code] 然后在我需要的service层中执行 [code="java"] UserSession.get("User"); //UserSession.get("User",User.class); [/code] 这样第一次一般都取不到session中的User对象。 第二次就可以。请问这个是什么原因呢?
关于AtomicInteger变量的一些疑问
本人最近写了一段代码,用到了AtomicInteger对这个变量,但是期待的结果与代码的实际运行 结果相差好大,现将代码奉上,求各位大牛给下解决方案。 class IDGeneration { private final static ConcurrentHashMap<Long, AtomicInteger> idMap = new ConcurrentHashMap<Long, AtomicInteger>(); private static final long baseTime = 1462377600000L; private Lock lock; IDGeneration() { lock = new ReentrantLock(); } @SuppressWarnings("unused") public Long generateRelativeIncrementUniqueId(String flag) { String dateString = GengratedUnqueId.formatDate(new Date(), GengratedUnqueId.PATTERN); Long currentTime = (System.currentTimeMillis() - baseTime); AtomicInteger queueId = new AtomicInteger(0); int i = 0; Long tempValue = null; lock.lock(); try { queueId = idMap.get(currentTime); if (queueId == null) { queueId = new AtomicInteger(0); idMap.clear(); idMap.put(currentTime, queueId); tempValue = (currentTime << 5 | queueId.get()); } else { queueId.getAndIncrement(); idMap.put(currentTime, queueId); tempValue = (currentTime << 5 | queueId.get()); } } finally { lock.unlock(); } return tempValue; return null; } } 这是测试代码: public static void main(String[] args) throws Exception { static ConcurrentHashMap<Long, String> map = new ConcurrentHashMap<Long, String>(); final IDGeneration idGeneration = new IDGeneration(); for (int i = 0; i < 100; i++) { Thread thread = new Thread(new Runnable() { @Override public void run() { long value = idGeneration .generateRelativeIncrementUniqueId(); map.put(value, ""); } }); thread.start(); } TimeUnit.SECONDS.sleep(5); System.out.println("map.size===" + map.size()); }
JAVA中问一个 不知道算不算是BigDecimal的问题
![图片说明](https://img-ask.csdn.net/upload/201702/14/1487056473_293876.png) 我在这个函数里传了一个List<map> 和一个bigDecimal 过来 然后建了2个栈 bigdecimal引用变量 xxglfSum和 xyglfSum 。然后取出这个List里的MAP ,然后再用xxglfSum这个引用变量指向这个map里的x.get("XXGLF")。 然后关键就是我用这个引用变量去multiply也就是乘我传过来的形参 。按道理来说这个引用变量是指向原来map里get到的堆地址,我做乘法的时候 为什之后来这个堆地址的值没有改变。难道multiply这个方法会生产新的堆变量? 还是说我的理解有错误,求高手解答下。
老是获取到position的最后一个值
不管按哪个按钮,上一次老是获取到position的第一个值,显示"苹果",然后按照网上的解决办法改了之后,老是获取到position的最后一个值,显示"运行" ![图片说明](https://img-ask.csdn.net/upload/201705/11/1494472503_511184.png) ``` package com.example.exer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.AlertDialog; import android.app.ListActivity; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ListActivity { private static final String TAG = "MainActivity"; private List<Map<String, Object>> mdata; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ListView mListView=getListView(); mdata = data(); mListView.setAdapter(new MyAdapter(this,mdata)); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> l, View v, int position, long id) { Log.i(TAG, (String)mdata.get(position).get("title")); Toast.makeText(MainActivity.this, (String)mdata.get(position).get("title"), 1000).show(); } }); } class MyAdapter extends BaseAdapter{ private Context context; Hodler hodler =null; private LayoutInflater minflater; private ArrayList<Map<String,Object>> datalist; public MyAdapter(Context context,List<Map<String,Object>> datalist) { this.context=context; this.minflater = LayoutInflater.from(context); this.datalist=(ArrayList<Map<String,Object>>)datalist; } @Override public int getCount() { // TODO Auto-generated method stub return datalist.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return datalist.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ hodler = new Hodler(); convertView= minflater.inflate(R.layout.mylist, null); hodler.img = (ImageView) convertView.findViewById(R.id.img); hodler.title = (TextView) convertView.findViewById(R.id.title); hodler.info = (TextView) convertView.findViewById(R.id.info); hodler.button = (Button) convertView.findViewById(R.id.button); convertView.setTag(hodler); }else{ hodler = (Hodler)convertView.getTag(); } hodler.img.setBackgroundResource((Integer) mdata.get(position).get("img")); hodler.title.setText((CharSequence) mdata.get(position).get("title")); hodler.info.setText((CharSequence) mdata.get(position).get("info")); //hodler.button.setTag(position); hodler.positio=position; hodler.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //showdialog((int)hodler.button.getTag()); showdialog(hodler.positio); } }); return convertView; } class Hodler { public ImageView img; public TextView title; public TextView info; public Button button; int positio;//增加一个变量记录每个item的值 } } public void showdialog(int position) { new AlertDialog.Builder(this).setTitle("提示信息").setMessage("你点击的标题是: " +(String)mdata.get(position).get("title")) .setPositiveButton("确定", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show(); setResult(RESULT_OK); finish(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); } public List<Map<String, Object>> data() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "苹果"); map.put("info", "apple"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "书"); map.put("info", "book"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "电脑"); map.put("info", "computer"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "对话"); map.put("info", "dialog"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "运行"); map.put("info", "run"); map.put("img", R.drawable.ic_launcher); list.add(map); return list; } @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; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } ```
struts2标签
比如说我已经在后台设了request.setAttribute("map", map); <% Map map = request.getAttribute("map"); for(Iterator iter = map.entrySet().iterator();iter.hasNext();){ Map.Entry entry = (Map.Entry)iter.next(); List list2 = (List)entry.getValue(); user = (User)list2.get(0); ...... ...... ...... } %> 这个在jsp页面 如果用struts2 的标签来转换,该怎么转换,, 要是我想定义变量,用struts2的标签怎么写 例如: int i = 0; String s = "abc"; 请赐教,,先谢过!!
for each循环变量赋值问题
对于普通类型来讲 ``` public void test() { List<String> strList = new ArrayList<String>(); strList.add("乐视网"); strList.add("财经网"); strList.add("凤凰网"); for(String str:strList){ if("乐视网".equals(str)){ str = "腾讯网"; } } System.out.println(strList); } ``` 这段代码输出的结果是: [乐视网, 财经网, 凤凰网] 可见循环计数器只是一个中间变量,它仅仅保存了当前正在遍历的集合元素,因此对其赋值并不会改变集合元素本身。 但是,对于map、对象类型来讲 ``` public void test() { List<Map<String,Object>> stringList = new ArrayList<Map<String,Object>>(); Map<String,Object> map = new HashMap<String, Object>(); map.put("leshi", "乐视网"); map.put("caijing", "财经网"); map.put("fenghuang", "凤凰网"); stringList.add(map); for(Map<String,Object> m:stringList){ if("乐视网".equals(m.get("leshi"))){ m.put("leshi", "乐视体育"); } } System.out.println(stringList); } ``` 这段代码输出的结果则为: [{fenghuang=凤凰网, caijing=财经网, leshi=乐视体育}] 显然原来的map的value被改变了。 这是为什么呢?
java如何实现在把方法赋值给一个变量,通过变量来调用方法
``` 比如Map<String,Object> a <字符串,方法引用> ``` 然后通过a.get()去调用方法。
发送邮件 类和变量都正确,就是接收不到。是哪里写错了吗?
public void sendCodeByEmail(String email, String account, String code) { // 验证码生成 String vcode = ""; for (Integer i = 0; i < 4; i++) { int in = (int) (Math.random() * 10); if (in == 0) { in = 1; } vcode = vcode + in; } Map<String, Object> map = new HashMap<String, Object>(); map.put("account", account); map.put("vcode", vcode); map.put("email", email); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); map.put("date", format.format(new Date())); // 验证信息 CompanyValidate validate = new CompanyValidate(); validate.setTargetName(email); validate.setVcode(vcode); validate.setTargetType(TYPE_EMAIL);// 邮箱验证 // 保存验证信息 companyValidateDao.insertValidate(validate); String key = ""; try { key = MD5.encode(account + email + vcode); map.put("key", key); } catch (Exception e) { return; } // 发送邮件 String sms_flag = (String) MemcachedUtils.getInstance().getClient() .get("baseConfig.sms.flag"); if ("true".equals(sms_flag)) { if (code.equals("0")) { map.put("address", AddressTool.getAddress("www") + "/doValidEmail.htm?key=" + key + "&account" + account + "&vcode=" + vcode); MailUtil.getInstance().sendMail("邮件密码找回", email, "feiliao91-pwd-mail", map, 0); System.out.println(map); } else if (code.equals("1")) { map.put("address", AddressTool.getAddress("trade") + "/security/unValidEmail.htm?key=" + key + "&account=" + account + "&vcode=" + vcode + "&email=" + email); MailUtil.getInstance().sendMail("邮件解绑", email, "feiliao91-email-mailUnbind", map, 0); } else if (code.equals("2")) { map.put("address", AddressTool.getAddress("trade") + "/security/doValidEmail.htm?key=" + key + "&account=" + account + "&vcode=" + vcode + "&email=" + email); MailUtil.getInstance().sendMail("邮件绑定", email, "feiliao91-email-mailBind", map, 0); } } else { // 本地打印信息 System.out.println(map); } }
ActivityA Bundle传值到一个有内部类的AcivityB的取值问题
Activity只有一个按钮带值“a”、“b”、“c”跳转到ActivityB ActivityB的代码 ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity_b); recive(); setArray(); } ```//接收Bundle private void recive() { Bundle bundle = getIntent().getExtras(); if (bundle != null) { A = bundle.getString("a", ""); B = bundle.getString("b", ""); C = bundle.getString("c", ""); Set<String> set = bundle.keySet(); for (String value : set) { mMap.put(value, bundle.getString(value, "")); } Log.e("Tag", "--->>>>" + A + "----->>" + B + "----->>>>" + C); Log.e("TagMap", "--->>>>" + mMap.toString()); } } ```class Util { String a; String b; String c; public Util(String a, String b, String c) { this.a = a; this.b = b; this.c = c; } public Map<String, Object> getMap() { Map<String, Object> map = new HashMap<>(); map.put("title", a); map.put("value", b); map.put("type", c); return map; } } class Util2 { String a; String b; String c; public Util2(String a, String b, String c) { this.a = a; this.b = b; this.c = c; } public Map<String, Object> getMap2() { Map<String, Object> map = new HashMap<>(); map.put("title", mMap.get(a)); map.put("value", mMap.get(b)); map.put("type", mMap.get(c)); return map; } } public Util u[] = { new Util(A, B, C), new Util(A, B, C), new Util(A, B, C), new Util(A, B, C), }; public Util2 u2[] = { new Util2("a", "b", "c"), new Util2("a", "b", "c"), new Util2("a", "b", "c"), new Util2("a", "b", "c"), }; private void setArray() { for (Util a : u) { Log.e("tagUtil", "--->>>" + a.getMap().get("title") + "--->>>" + a.getMap().get("value") + "--->>>" + a.getMap().get("type")); } for (Util2 b : u2) { Log.e("tagUtil2", "--->>>" + b.getMap2().get("title") + "--->>>" + b.getMap2().get("value") + "--->>>" + b.getMap2().get("type")); } } 打印的Log 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/Tag﹕ --->>>>a----->>b----->>>>c 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/TagMap﹕ --->>>>{b=b, c=c, a=a} 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil﹕ --->>>--->>>null--->>>null 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil﹕ --->>>--->>>null--->>>null 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil﹕ --->>>--->>>null--->>>null 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil﹕ --->>>--->>>null--->>>null 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil2﹕ --->>>a--->>>b--->>>c 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil2﹕ --->>>a--->>>b--->>>c 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil2﹕ --->>>a--->>>b--->>>c 04-05 10:50:23.413 14371-14371/com.project.xzj.testbundle E/tagUtil2﹕ --->>>a--->>>b--->>>c 我想问题的是 为什util的值取成员变量A 、B、C的为空,而用map取值的Util2则有值? ``` ```
JAV类的静态变量在项目启动时初始化,在项目启动后怎么通过接口修改
@RequestMapping("/refreshCacheData.do") public String refreshCacheData() { BasicDataDao basicDataDao = new BasicDataDao(); basicDataDao.load(); return "Refresh cache data success!"; } 通过这个接口去重新调用load()方法,貌似不行。 下面是类的定义: @Repository public class BasicDataDao extends BaseDaoImpl { /** 同步的所有人员信息 */ static List<TSysStaff> users; /** 按code和登录名缓存的人员map数据 */ static Map<Object, TSysStaff> usersMap; /** 同步的所有人员归属部门信息 */ static List<TSysStaffOrg> usersOrg; /** 按人员code缓存的人员归属部门map数据 */ static Map<Object, TSysStaffOrg> usersOrgMap; /** 同步的所有部门机构信息 */ static List<TSysOrg> depts; /** 按code缓存的组织部门信息 */ static Map<Object, TSysOrg> deptsMap; /** 同步的所有SAP过来的日历信息 */ static List<TSysCalendar> calendars; /** 同步的所有cost center的数据 */ static List<TSysCostcenter> costCenters; /** 按code缓存的cost center信息 */ static Map<Object, TSysCostcenter> costcenterMap; /** 同步的所有wbs的数据 */ static List<TSysWbs> wbss; /** 按code缓存的wbs信息 */ static Map<Object, TSysWbs> wbsMap; /** 同步的所有国家的数据 */ static List<TSysCountry> countries; /** 按code缓存的国家信息 */ static Map<Object, TSysCountry> countryMap; /** 同步的所有币种信息 */ static List<TSysCurrency> currencies; /** 按code缓存的币种信息 */ static Map<Object, TSysCurrency> currenciesMap; /** 同步的所有省份信息 */ static List<TSysProvince> provinces; /** 按code缓存的省份信息 */ static Map<Object, TSysProvince> provinceMap; /** 查询用户的SQL */ @Value("${basicdata.sql.users}") private String usersSql; /** 查询用户归属部门的SQL */ @Value("${basicdata.sql.users.org}") private String usersOrgSql; /** 查询部门的SQL */ @Value("${basicdata.sql.depts}") private String deptsSql; /** 查询日历的SQL */ @Value("${basicdata.sql.calendars}") private String calendarsSql; /** 查询cost center的SQL */ @Value("${basicdata.sql.costCenter}") private String costCenterSql; /** 查询wbs的SQL */ @Value("${basicdata.sql.wbs}") private String wbsSql; /** 查询国家的SQL */ @Value("${basicdata.sql.country}") private String countrySql; /** 查询省份的SQL */ @Value("${basicdata.sql.province}") private String provinceSql; /** 查询币种的SQL */ @Value("${basicdata.sql.currencies}") private String currenciesSql; /** 读取所有需要缓存到本地的基础数据 */ @PostConstruct public void load() { users = this.query(usersSql, TSysStaff.class); usersMap = this.listToMap(users, "pkId", "staffCode", "staffEnName", "staffDisName"); usersOrg = this.query(usersOrgSql, TSysStaffOrg.class); usersOrgMap = this.listToMap(usersOrg, "pkId", "staffCode"); calendars = this.query(calendarsSql, TSysCalendar.class); costCenters = this.query(costCenterSql, TSysCostcenter.class); costcenterMap = this.listToMap(costCenters, "pkId", "costcenterCode"); wbss = this.query(wbsSql, TSysWbs.class); wbsMap = this.listToMap(wbss, "pkId", "wbsCode"); countries = this.query(countrySql, TSysCountry.class); countryMap = this.listToMap(countries, "pkId", "countryCode"); provinces = this.query(provinceSql, TSysProvince.class); provinceMap = this.listToMap(provinces, "pkId", "provinceCode"); depts = this.query(deptsSql, TSysOrg.class); deptsMap = this.listToMap(depts, "pkId", "orgCode"); currencies = this.query(currenciesSql, TSysCurrency.class); currenciesMap = this.listToMap(currencies, "pkId", "currencyCode"); } /** * 根据sql读取实体对象entityClass的列表,这个方法有可能不通过web访问,所以opensession. * * @param sql 查询SQL * @param entityClass 实体类 * @param args 查询参数 * @return */ @SuppressWarnings("unchecked") public <T> List<T> query(final String sql, final Class<T> entityClass, final Object... args) { return getHibernateTemplate().execute(new HibernateCallback<List<T>>() { @Override public List<T> doInHibernate(Session session) throws HibernateException { SQLQuery query = session.createSQLQuery(sql); query.setResultTransformer(ColumnsToBeanResultTransformer.columnsToBean(entityClass)); if (args != null && args.length > 0) { for (int i = 0, l = args.length; i < l; i++) { query.setParameter(i, args[i]); } } List<T> list = query.list(); return list; } }); } /** * 将实体列表转换为map,key为每个实体对象的propertyNames属性的值 * * @param list 实体对象列表 * @param propertyNames 作为map的key的属性名.每个对象会使用其对应的属性名作为map的key * @return */ public <T> Map<Object, T> listToMap(List<T> list, String... propertyNames) { Map<Object, T> map = new LinkedHashMap<Object, T>(); for (T e : list) { for (String propertyName : propertyNames) { map.put(BeanHelper.getPropertyValue(e, propertyName), e); } } return map; } /** * 所有人员数据. * * @return 所有员工基础数据 */ public static List<TSysStaff> getUsers() { return users; } /** * 根据人员代码或登录名读取人员数据 * * @param code 人员代码或登录名 * @return 代码或登录名为code的人员 */ public static TSysStaff getUser(String code) { return usersMap.get(code); } /** * 根据人员代码或登录名读取人员数据 * * @param disName 人员显示名字 * @return 显示名字为disName的人员 */ public static TSysStaff getUserByDisName(String disName) { return usersMap.get(disName); } //模糊查询 public static List<TSysStaff> getUserLikeSearchWithDisName(String disName) { List<TSysStaff> tSysStaffs = new ArrayList<>(); for(TSysStaff tSysStaff : users){ if(!StringUtils.isEmpty(tSysStaff.getStaffDisName()) && tSysStaff.getStaffDisName().contains(disName)){ tSysStaffs.add(tSysStaff); } } return tSysStaffs; } /** * 根据人员代码读取人员归属机构数据 * * @param code 人员代码 * @return 人员归属机构数据 */ public static TSysStaffOrg getUserOrg(String code) { return usersOrgMap.get(code); } /** * 根据人员代码读取人员归属机构数据 * * @param code 人员代码 * @return 人员归属机构数据 */ public static List<TSysCalendar> getTSysCalendar() { return calendars; } /** * 所有组织部门数据 * * @return 所有组织部门数据 */ public static List<TSysOrg> getDepts() { return depts; } /** * 根据部门代码读取数据 * * @param code 部门代码 * @return 代码为code的部门 */ public static TSysOrg getDept(String code) { return deptsMap.get(code); } /** * 所有cost center数据 * * @return 所有cost center数据 */ public static List<TSysCostcenter> getTSysCostcenters() { return costCenters; } /** * 根据cost center代码读取数据 * * @param code cost center代码 * @return 代码为code的cost center */ public static TSysCostcenter getTSysCostcenter(String code) { return costcenterMap.get(code); } /** * 所有WBS数据 * * @return 所有WBS数据 */ public static List<TSysWbs> getTSysWbss() { return wbss; } /** * 根据wbs代码读取数据 * * @param code wbs代码 * @return 代码为code的wbs */ public static TSysWbs getTSysWbs(String code) { return wbsMap.get(code); } /** * 所有国家数据 * * @return 所有国家数据 */ public static List<TSysCountry> getTSysCountries() { return countries; } /** * 根据国家代码读取数据 * * @param code 国家代码 * @return 代码为code的国家 */ public static TSysCountry getTSysCountry(String code) { return countryMap.get(code); } /** * 所有省份数据 * * @return 所有省份数据 */ public static List<TSysProvince> getTSysProvinces() { return provinces; } /** * 根据省份代码读取数据 * * @param code 省份代码 * @return 代码为code的省份 */ public static TSysProvince getTSysProvince(String code) { return provinceMap.get(code); } /** * 所有币种数据 * * @return 所有组织部门数据 */ public static List<TSysCurrency> getCurrencies() { return currencies; } /** * 根据币种代码得到币种数据 * * @param code 币种代码 * @return 代码为code的币种数据 */ public static TSysCurrency getCurrency(String code) { return currenciesMap.get(code); } 但是通过schedule却可以调用成功: <bean id="refreshDBCache" class="com.*.common.dao.BasicDataDao"></bean> <task:scheduled-tasks> <task:scheduled ref="refreshDBCache" method="load" cron="0 0 0,12 * * ?" /> </task:scheduled-tasks>
别装了,难道你不想在jsp中调用静态变量吗?
我们首先定义一个用来取得静态变量的Map,重写了Get方法 <br /><pre name="code" class="java"> /** * 功能描述: * 相关配置文件: * @author nofeng */ package com.cnhuike.util; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; public class ConstantUtil extends HashMap implements Map{ public ConstantUtil(){ } public Object getValue(String constantPath)throws Exception{ String classPath=StringUtils.substringBeforeLast(constantPath, "."); String fieldName=StringUtils.substringAfterLast(constantPath, "."); Field field=Class.forName(classPath).getField(fieldName); return field.get( null ); } @Override public Object get( Object key ) { try { return getValue( key.toString() ); } catch (Exception e) { throw new IllegalArgumentException( " 找不到相关的变量: " + e.getMessage() ); } } } </pre> <br /> <br />如何在jsp中调用: <br /><pre name="code" class="java"> &lt;jsp:useBean id="constantUtil" class="com.cnhuike.util.ConstantUtil"&gt;&lt;/jsp:useBean&gt; ${constantUtil['com.cnhuike.util.constant.UserConstant.ISADMIN']} </pre>
范型的困惑,spring源码中对范型及成员变量的疑问
private <T> T doGetSingleton(String name, Class<T> requiredType) throws NamingException { Map var3 = this.singletonObjects; synchronized(this.singletonObjects) { Object jndiObject; if (this.singletonObjects.containsKey(name)) { jndiObject = this.singletonObjects.get(name); if (requiredType != null && !requiredType.isInstance(jndiObject)) { throw new TypeMismatchNamingException(this.convertJndiName(name), requiredType, jndiObject != null ? jndiObject.getClass() : null); } else { return jndiObject; } } else { jndiObject = this.lookup(name, requiredType); this.singletonObjects.put(name, jndiObject); return jndiObject; } } } 问题1 、方法返回类型为范型T,为什么可以return的是Object,而且并未用强转 问题2、Object jndiObject;作为局部变量为什么不需要给定一个初始值
求助大神!android的baseadapter老是报空指针
package com.example.kaoqin; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.ObjectUtils.Null; import android.R.integer; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class User_TiaoZhuan_Activity2 extends Activity { private ListView list; private SimpleAdapter SAda; public String huoquuser; private String[] From = new String[]{"yonghu","kaishi","jieshu","zong","yuanyin","zhuangtai","id"}; public ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>(); private ArrayList<ItemBean> datalist = new ArrayList<ItemBean>(); public String NAME; public String START; public String END; public String SUM; public String REASON; public String STATE; public String ID; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.user_tiaozhuan_activity2); list = (ListView)findViewById(R.id.listViewuser); Intent intent = getIntent();//将检索出来的intent赋值给一个Intent类型的变量intent,getIntent()方法用于直接返回Intent实例 Bundle bundle = intent.getExtras();///获取前面的那个activity传过来的数据 huoquuser = bundle.getString("username"); HttpClien httpClien = new HttpClien(); data = httpClien.HTTPLeaveListView(huoquuser, "2"); //SAda = new SimpleAdapter(User_TiaoZhuan_Activity2.this, getdata(data),R.layout.user_tiaozhuan_buju2, From,new int[]{R.id.tiaozhuan_user2, //R.id.tiaozhuan_start2,R.id.tiaozhuan_end2,R.id.tiaozhuan_sum2,R.id.tiaozhuan_reason2,R.id.tiaozhuan_shenhe2,R.id.tiaozhuan_id2}); //list.setAdapter(SAda); Edit nihao = new Edit(this, getdata(data));//把数据源放入baseadapter list.setAdapter(nihao); } public ArrayList<ItemBean> getdata(ArrayList<HashMap<String,Object>> shuju) { for (int i = 0; i < data.size(); i++) { NAME = String.valueOf(shuju.get(i).get("name")); START = String.valueOf(shuju.get(i).get("start")); END = String.valueOf(shuju.get(i).get("end")); SUM = String.valueOf(shuju.get(i).get("sum")); REASON = String.valueOf(shuju.get(i).get("reason")); STATE = String.valueOf(shuju.get(i).get("state")); ID = String.valueOf(shuju.get(i).get("id")); ItemBean it = new ItemBean(NAME, START, END, SUM, REASON, STATE,ID); datalist.add(it); } return datalist; } } class Edit extends BaseAdapter { private Context context; private ArrayList<ItemBean> list; private LayoutInflater miInflater; public Edit(Context context,ArrayList<ItemBean> list) { LayoutInflater miInflater; miInflater = LayoutInflater.from(context); this.context = context; this.list = list; //根据context上下文加载布局,这里的是User_TiaoZhuan_Activity本身,即this } @Override public int getCount() { // TODO Auto-generated method stub //在此适配器中所代表的数据集中的条目数 return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub //获取数据集中与指定索引对应的数据项 return list.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub //获取在列表中与指定索引对应的行id return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder kongjian = null; if(convertView == null) { convertView = miInflater.inflate(R.layout.user_tiaozhuan_buju2, null); kongjian = new ViewHolder(); kongjian.TV_sure = (TextView)convertView.findViewById(R.id.yunxu); kongjian.TV_cancel = (TextView)convertView.findViewById(R.id.bohui); kongjian.TVuser = (TextView)convertView.findViewById(R.id.tiaozhuan_user2); kongjian.TVstart = (TextView)convertView.findViewById(R.id.tiaozhuan_start2); kongjian.TVend = (TextView)convertView.findViewById(R.id.tiaozhuan_end2); kongjian.TVsum = (TextView)convertView.findViewById(R.id.tiaozhuan_sum2); kongjian.TVreason = (TextView)convertView.findViewById(R.id.tiaozhuan_reason2); kongjian.TVstate = (TextView)convertView.findViewById(R.id.tiaozhuan_shenhe2); kongjian.TVid = (TextView)convertView.findViewById(R.id.tiaozhuan_id2); //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag convertView.setTag(kongjian); }else { kongjian = (ViewHolder)convertView.getTag(); } kongjian.TV_sure.setText("允许请假"); kongjian.TV_cancel.setText("驳回请假"); ItemBean bean = list.get(position); kongjian.TVuser.setText(bean.Itemuser);; kongjian.TVstart.setText(bean.Itemstarttime); kongjian.TVend.setText(bean.Itemendtime); kongjian.TVsum.setText(bean.Itemsumtime); kongjian.TVreason.setText(bean.Itemreason); kongjian.TVstate.setText(bean.Itemstate); kongjian.TVid.setText(bean.ItemId); kongjian.TV_sure.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println("通过"); } }); kongjian.TV_cancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println("不通过"); } }); return convertView; } } class ViewHolder { TextView TV_sure; TextView TV_cancel; TextView TVuser; TextView TVstart; TextView TVend; TextView TVsum; TextView TVreason; TextView TVid; TextView TVstate; } class ItemBean { public String Itemuser; public String Itemstarttime; public String Itemendtime; public String Itemsumtime; public String Itemreason; public String Itemstate; public String ItemId; public ItemBean(String a,String b,String c, String d,String e,String f,String g) { Itemuser = a; Itemstarttime = b; Itemendtime = c; Itemsumtime = d; Itemreason = e; Itemstate = f; ItemId = g; } }![图片说明](https://img-ask.csdn.net/upload/201611/10/1478771417_684227.png) 错误显示的是121行存在空指针,inflate里的布局文件是存在的啊,R类里也有 地址啊(R.layout.user_tiaozhuan_buju2, null);
activity传值,没传过去唉
怎么才能从activity中传gps的值到myservice中,我的gps数据传不过去,求大佬解答 ``` public class MainActivity extends Activity { //地图相关 Workspace mWorkspace; MapView mMapView; private static Map m_map; private ZoomControls m_zoom; private LocationManager gpsLocationManager; public static Location lastLocation = null; private static Navigation mNavigation; private static Track m_track; private ImageButton ib_loc; private int screenWidth; private int screenHeight; String rootPath = android.os.Environment.getExternalStorageDirectory ().getAbsolutePath (); //设置全局变量并初始化 Point2D curLocation = new Point2D ( ); Point2D point2d= new Point2D ( ); private static Point2D mPoint; //是否第一次定位,如果是第一次定位的话要将自己的位置显示在地图中间 boolean isFirstOpen = true; //轨迹相关 public static boolean m_EnableLocationService; private Button btn_recording,btn_stop; private Layers m_Layers; public static double mlocationY,mlocationX; private boolean m_ExitEnable = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate ( savedInstanceState ); power(); Environment.setLicensePath ( rootPath + "/SuperMap/license/" ); Environment.setTemporaryPath ( rootPath + "/SuperMap/temp/" ); Environment.setWebCacheDirectory ( rootPath + "/SuperMap/WebCache/" ); Environment.initialization ( this ); startMyLocationServerce (); // 隐藏标题栏 requestWindowFeature ( Window.FEATURE_NO_TITLE ); // 隐藏状态栏 getWindow ().setFlags ( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN ); WindowManager manager = getWindowManager (); screenWidth = manager.getDefaultDisplay ().getWidth (); screenHeight = manager.getDefaultDisplay ().getHeight (); setContentView ( R.layout.activity_main ); //打开地图 openMap (); //获取地图控件 initView (); //定位监听 initLocationListener (); //第一次定位返回定位点 firstLocation (); initTrack (); } private void power() { List<String> permissionList = new ArrayList<> (); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.RECORD_AUDIO); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.CAMERA); } if (!permissionList.isEmpty()) { String[] permissions = permissionList.toArray(new String[permissionList. size()]); ActivityCompat.requestPermissions(MainActivity.this, permissions, 1); } else { } } private void initView() { m_zoom = (ZoomControls)findViewById(R.id.zoomControls1); mMapView = (MapView)findViewById(R.id.mapView); m_zoom.setIsZoomInEnabled(true); m_zoom.setIsZoomOutEnabled(true); ib_loc = findViewById ( R.id.ib_loc ); btn_recording = findViewById ( R.id.btn_recording ); btn_stop = findViewById ( R.id.btn_stop ); //放大按钮 m_zoom.setOnZoomInClickListener(new View.OnClickListener(){ public void onClick(View v) { m_map.zoom(2); m_map.refresh(); } }); //缩小按钮 m_zoom.setOnZoomOutClickListener(new View.OnClickListener(){ public void onClick(View v) { m_map.zoom(0.5); m_map.refresh(); } }); //返回当前位置 ib_loc.setOnClickListener ( new View.OnClickListener () { @Override public void onClick(View v) { m_map.setCenter ( point2d ); m_map.refresh (); } } ); btn_recording.setOnClickListener ( new View.OnClickListener () { @Override public void onClick(View v) { track(); updateLocation (); } } ); btn_stop.setOnClickListener ( new View.OnClickListener () { @Override public void onClick(View v) { m_track.stopTrack (); m_EnableLocationService = false; } } ); m_map.refresh(); } private void firstLocation(){ MapControl mapControl = mMapView.getMapControl (); mapControl.zoomTo ( 1,50000 ); //设置地图缩放等级 TextView tv1; tv1 = findViewById ( R.id.tv1 ); if(lastLocation != null){ if(isFirstOpen){ m_map.setCenter ( point2d ); m_map.refresh (); } isFirstOpen = false; System.out.print ("======================" + point2d ); double la = lastLocation.getLatitude (); double lo = lastLocation.getLongitude (); //测试用,所获取的是第一次定位的信息 tv1.setText ( "维度:" + (la ) + "\n经度" + (lo )); } else { tv1.setText ( "无法获取地理信息" ); } } private void openMap() { // 打开工作空间 mWorkspace = new Workspace (); WorkspaceConnectionInfo info = new WorkspaceConnectionInfo (); info.setServer ( rootPath + "/HiShow/SuperMap/mapData/mqdemo.smwu" ); info.setType ( WorkspaceType.SMWU ); mWorkspace.open ( info ); mMapView = (MapView) findViewById ( R.id.mapView ); MapControl mapControl = mMapView.getMapControl (); m_map = mapControl.getMap (); m_map.setWorkspace ( mWorkspace ); String mapName = mWorkspace.getMaps ().get ( 0 ); m_map.open ( mapName ); m_map.refresh (); mNavigation = mapControl.getNavigation (); mNavigation.setEncryption ( new SuperMapPatent () ); mapControl.setMapParamChangedListener ( mapParameterChangedListener ); } //使用gps定位自己 private void initLocationListener() { gpsLocationManager = (LocationManager) this .getSystemService ( Context.LOCATION_SERVICE ); if (ActivityCompat.checkSelfPermission ( this, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission ( this, Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } lastLocation = gpsLocationManager .getLastKnownLocation ( LocationManager.GPS_PROVIDER ); gpsLocationManager.requestLocationUpdates ( LocationManager.GPS_PROVIDER, 1, 1, locationListener ); } //自定义gps定位自己的监听 private final LocationListener locationListener = new LocationListener () { //Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 public void onStatusChanged(String provider, int status, Bundle extras) { updateLocation (); } //Provider被enable时触发此函数,比如网路被打开 public void onProviderEnabled(String provider) { } //Provider被disable时触发此函数,比如网路被关闭 public void onProviderDisabled(String provider) { } //当坐标改变时触发函数 public void onLocationChanged(Location location) { lastLocation = location; updateLocation (); } }; private final MapParameterChangedListener mapParameterChangedListener = new MapParameterChangedListener () { @Override public void scaleChanged(double arg0) { updateLocation (); } @Override public void boundsChanged(Point2D arg0) { updateLocation (); } @Override public void angleChanged(double v) { } @Override public void sizeChanged(int i, int i1) { } }; @Override protected void onDestroy() { super.onDestroy (); gpsLocationManager.removeUpdates ( locationListener ); mMapView.getMapControl ().removeMapParamChangedListener ( mapParameterChangedListener ); } @Override protected void onResume() { super.onResume (); if (ActivityCompat.checkSelfPermission ( this, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission ( this, Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000)或最小位移变化超过N米 gpsLocationManager.requestLocationUpdates ( LocationManager.GPS_PROVIDER, 1, 1, locationListener ); } @Override protected void onPause() { super.onPause (); // 取消注册监听 gpsLocationManager.removeUpdates ( locationListener ); } //更新本地经纬度数据 private void updateLocation() { if (lastLocation == null) { return; } // sp = getSharedPreferences("lastLocation", Context.MODE_PRIVATE); // String mSLocationx = sp.getString("latitude", "0.0"); // String mSLocationy = sp.getString("longitude", "0.0"); // Double mLocationx = Double.valueOf(mSLocationx); // Double mLocationy = Double.valueOf(mSLocationy); //地理位置纠偏 curLocation.setX ( lastLocation.getLongitude () + 0.0055 );//经度 curLocation.setY ( lastLocation.getLatitude () + 0.015 );//维度 //地理坐标与投影坐标的转换 PrjCoordSys Prj = m_map.getPrjCoordSys (); if (Prj.getType () != PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE) { Point2Ds points = new Point2Ds (); points.add ( curLocation ); PrjCoordSys desPrjCoorSys = new PrjCoordSys (); desPrjCoorSys.setType ( PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE ); CoordSysTranslator.convert ( points, desPrjCoorSys, Prj, new CoordSysTransParameter (), CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION ); curLocation = points.getItem ( 0 ); mlocationY = curLocation.getY (); mlocationX = curLocation.getX (); //从控制台查看想X、Y的值 // System.out.println ( mlocationX ); // System.out.println(mlocationY); point2d.setX ( mlocationX ); point2d.setY ( mlocationY ); GeoPoint gpsgeoPoint = new GeoPoint (); gpsgeoPoint.setX ( mlocationX ); gpsgeoPoint.setY ( mlocationY ); addCallByName(gpsgeoPoint); } } private void addCallByName(GeoPoint gps){ mMapView.removeAllCallOut (); CallOut callout = new CallOut ( MainActivity.this ); callout.setStyle ( CalloutAlignment.CENTER ); callout.setCustomize ( true ); callout.setLocation ( gps.getX (), gps.getY () ); ImageView image = new ImageView ( MainActivity.this ); image.setBackgroundResource ( R.drawable.location ); callout.setContentView ( image ); mMapView.addCallout ( callout ); } public void startMyLocationServerce(){ new Thread(new Runnable() { @Override public void run() { Intent intentService = new Intent(); intentService.setAction ( "com.lcdx.supermap.myapplication.MyLocationService.START" ); //从3.1以后要注册动态广播 intentService.setClass(MainActivity.this, MyLocationService.class); startService(intentService); } }).start(); } private void initTrack(){ if (m_track != null){ // 设置用户传入GPS数据 m_track.setCustomLocation(true); // 设置距离间隔为3米 m_track.setDistanceInterval(3); // 设置时间间隔为1s m_track.setTimeInterval(20); // 设置匹配道路所在的数据集 m_track.setMatchDatasets(m_map.getWorkspace().getDatasources().get("road").getDatasets()); m_track.setCustomLocation(false); } } /** * 设置用于轨迹记录的GPS数据 * @param gpsData */ private static int count = 0; public static void setGpsData(LocationManagePlugin.GPSData gpsData){ if(m_track != null){ //创建point2d Point2D mPoint = mNavigation.encryptGPS ( gpsData.dLongitude,gpsData.dLatitude ); gpsData.dLongitude = mPoint.getX (); gpsData.dLatitude = mPoint.getX (); m_track.setCustomLocation ( false ); m_track.setGPSData ( gpsData ); count ++; } if(50 == count){ m_map.refresh (); count = 0; } } private void track() { System.out.println("================================6"); Datasource m_Datasource = m_map.getWorkspace().getDatasources().get("track"); System.out.println("================================7"); m_Layers = m_map.getLayers(); System.out.println("================================8"); // 创建数据集 DatasetVector dataset = m_track.createDataset(m_Datasource, "qwe"); System.out.println("================================9"); //设置数据集的投影信息 PrjCoordSys Prj = m_map.getPrjCoordSys(); if (Prj.getType() != PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE) { PrjCoordSys desPrjCoorSys = new PrjCoordSys(); desPrjCoorSys.setType(PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE); dataset.setPrjCoordSys(desPrjCoorSys); } //设置轨迹记录的数据集为datas m_track.setDataset(dataset); System.out.println("================================10"); //开始轨迹记录 m_track.startTrack(); System.out.println("================================11"); clearLayers(); System.out.println("================================12"); //添加在图层轨迹记录的点数据 m_Layers.add(dataset, true); System.out.println("================================13"); System.out.println(dataset + "****************************dataset"); m_EnableLocationService = false; System.out.println("================================14"); //刷新地图 m_map.refresh(); System.out.println("================================15"); //开启定位 updateLocation (); } /** * 清除除了底图以外的图层 */ private void clearLayers() { int count = m_Layers.getCount(); for (; count > 1; ) { m_Layers.remove(0); count = m_Layers.getCount(); } } } ``` public class MyLocationService extends Service { public static double mlocationY,mlocationX; public static double douX,douY; private LocationManagePlugin.GPSData gpsData = new LocationManagePlugin.GPSData (); private SharedPreferences sp; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { // TODO Auto-generated method stub System.out.println("onCreate"); super.onCreate(); } @Override public void onDestroy() { // TODO Auto-generated method stub System.out.println("onDestroy"); mHandler.removeCallbacks(mRunnable); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub mHandler.postDelayed(mRunnable, 400); System.out.println("onStartCommand" + flags + "__" + startId); return super.onStartCommand(intent, flags, startId); } Handler mHandler = new Handler (); Runnable mRunnable = new Runnable () { @Override public void run() { if (MainActivity.m_EnableLocationService) { initGpsData(); MainActivity.setGpsData ( gpsData ); } mHandler.postDelayed(mRunnable, 400); } }; private void initGpsData(){ douX = MainActivity.lastLocation.getLongitude (); douY = MainActivity.lastLocation.getLatitude (); gpsData.dLatitude = mlocationY; gpsData.dLongitude = mlocationX; System.out.println("=========我的Y"+mlocationY); System.out.println("=========我的X"+mlocationX); } } ``` ```
跪求高手指教:将此JAVA方法改写成sqlserver存储过程,
/** * 计算并保存遗漏值 * * @CreateDate Dec 16, 2013 - 2:48:44 PM * @param request */ @SuppressWarnings("unchecked") public void saveOmitValue(HttpServletRequest request) { // 获取当前日期 String date = DateUtils.formatDate(new Date()); // 获取前一天日期 String BeforeDay = DateUtils.getTheDayBeforeDay(); // 存储执行sql的变量 StringBuilder strBui = new StringBuilder(1000000); // 查询方案一列中最大的中奖号码的排列号需要的map Map<String, Object> map = new HashMap<String, Object>(); // 查询用sql StringBuilder sql = new StringBuilder(4000); // 查询用条件 StringBuilder searchCondition = new StringBuilder(4000); // 获取当前登录的用户 User user = (User) request.getSession().getAttribute(Constants.USER_KEY); // 获取开奖号对应的代码 String[] winningNoCode = request.getParameterValues("winningNoCode"); // 临时的前一天遗漏值 int temOmitValue = 0; // 得到查询条件 for (int k = 0; k < winningNoCode.length; k++) { if (k == 0) { searchCondition.append("(B.NO_MSG = " + winningNoCode[k] + " AND A.SCHEME_SEQ = " + (k + 1) + ")"); } searchCondition.append("OR(B.NO_MSG = " + winningNoCode[k] + " AND A.SCHEME_SEQ = " + (k + 1) + ")"); } // 删除当天的遗漏值记录 sql.append("DELETE OMIT_VALUE_COORD WHERE BET_MODEL_ID='" + user.getBetModelId() + "' AND CREATE_DATE='" + date + "'"); Pwfci.SQLdeleteValue(sql.toString()); // 查询前100条方案 sql.setLength(0); sql.append("select TOP 100 * from TWO_SCHEME_F WHERE DEL_FLAG = '1' AND BET_MODEL_ID = '" + user.getBetModelId() + "' ORDER BY ID"); List<TwoSchemeF> tsfs = (List<TwoSchemeF>) Pwfci.queryAllBySQL(sql.toString(), TwoSchemeF.class); for (TwoSchemeF tsf : tsfs) { System.out.println("计算遗漏值时间--Bengin >>>>>>> "+DateUtils.formatDateTime(new Date())); // 和值方案遗漏值插入 if (tsf.getType() == 1) { for (int j = 2; j < 112; j++) { // 查询方案一列中最大的中奖号码的排列号 sql.setLength(0); sql.append("SELECT MAX(A.SCHEME_SEQ) AS MAX_COUNT " + "FROM SCHEME_SEQ A LEFT JOIN IDENTIFY_NO B ON A.IDENTIFY_NO_XCOORD=B.XCOORD " + "AND B.CODE = " + tsf.getType() + " AND B.YIDENTIFY = " + j + " WHERE A.PID = " + tsf.getId() + " AND A.SCHEME_SEQ <= " + winningNoCode.length + " AND("); sql.append(searchCondition); sql.append(");"); map = Pwfci.getMapBySQL(sql.toString()); String maxCount = (String) map.get("MAX_COUNT"); // 如果等于空说明当天此方案此列没有中奖,遗漏值为开奖期数加上前一天的遗漏值 if (maxCount.equals("")) { // 查询前一天的遗漏值 sql.setLength(0); sql.append("SELECT OMIT_VALUE FROM OMIT_VALUE_COORD WHERE PID=" + tsf.getId() + " AND YCOORD = " + j + " AND CREATE_DATE = '" + BeforeDay + "' AND DEL_FLAG='1' AND BET_MODEL_ID='" + user.getBetModelId() + "'"); map = Pwfci.getMapBySQL(sql.toString()); temOmitValue = map.get("OMIT_VALUE") != null ? Integer.parseInt(map.get("OMIT_VALUE") .toString()) : 0; // 插入遗漏值 sql.setLength(0); sql.append("INSERT INTO OMIT_VALUE_COORD(ID,OMIT_VALUE,PID,YCOORD,DEL_FLAG," + "CREATE_DATE,BET_MODEL_ID) VALUES('" + UUID.randomUUID() + "'," + (winningNoCode.length + temOmitValue) + "," + tsf.getId() + "," + j + ",'1','" + date + "','" + user.getBetModelId() + "');"); strBui.append(sql); } else { // 如果不等于空,遗漏值为此排列号之后的总数 sql.setLength(0); sql.append("INSERT INTO OMIT_VALUE_COORD(ID,OMIT_VALUE,PID,YCOORD,DEL_FLAG," + "CREATE_DATE,BET_MODEL_ID) " + "SELECT '" + UUID.randomUUID() + "',COUNT(ID)," + tsf.getId() + "," + j + ",'1','" + date + "','" + user.getBetModelId() + "' FROM SCHEME_SEQ WHERE PID = " + tsf.getId() + " AND SCHEME_SEQ <= " + winningNoCode.length + " AND SCHEME_SEQ > " + maxCount + " ;"); strBui.append(sql); } } } // 差额方案遗漏值插入 if (tsf.getType() == 0) { for (int j = 0; j < 110; j++) { // 查询方案一列中最大的中奖号码的排列号 sql.setLength(0); sql.append("SELECT MAX(A.SCHEME_SEQ) AS MAX_COUNT " + "FROM SCHEME_SEQ A LEFT JOIN IDENTIFY_NO B ON A.IDENTIFY_NO_XCOORD=B.XCOORD " + "AND B.CODE = " + tsf.getType() + " AND B.YIDENTIFY = " + j + " WHERE A.PID = " + tsf.getId() + " AND A.SCHEME_SEQ <= " + winningNoCode.length + " AND("); sql.append(searchCondition); sql.append(");"); map = Pwfci.getMapBySQL(sql.toString()); String maxCount = (String) map.get("MAX_COUNT"); // 如果等于空说明当天此方案此列没有中奖,遗漏值为开奖期数加上前一天的遗漏值 if (maxCount.equals("")) { // 查询前一天的遗漏值 sql.setLength(0); sql.append("SELECT OMIT_VALUE FROM OMIT_VALUE_COORD WHERE PID=" + tsf.getId() + " AND YCOORD = " + j + " AND CREATE_DATE = '" + BeforeDay + "' AND DEL_FLAG='1' AND BET_MODEL_ID='" + user.getBetModelId() + "'"); map = Pwfci.getMapBySQL(sql.toString()); temOmitValue = map.get("OMIT_VALUE") != null ? Integer.parseInt(map.get("OMIT_VALUE") .toString()) : 0; // 插入遗漏值 sql.setLength(0); sql.append("INSERT INTO OMIT_VALUE_COORD(ID,OMIT_VALUE,PID,YCOORD,DEL_FLAG," + "CREATE_DATE,BET_MODEL_ID) VALUES('" + UUID.randomUUID() + "'," + (winningNoCode.length + temOmitValue) + "," + tsf.getId() + "," + j + ",'1','" + date + "','" + user.getBetModelId() + "');"); strBui.append(sql); } else { // 如果不等于空,遗漏值为此排列号之后的总数 sql.setLength(0); sql.append("INSERT INTO OMIT_VALUE_COORD(ID,OMIT_VALUE,PID,YCOORD,DEL_FLAG," + "CREATE_DATE,BET_MODEL_ID) " + "SELECT '" + UUID.randomUUID() + "',COUNT(ID)," + tsf.getId() + "," + j + ",'1','" + date + "','" + user.getBetModelId() + "' FROM SCHEME_SEQ WHERE PID = " + tsf.getId() + " AND SCHEME_SEQ <= " + winningNoCode.length + " AND SCHEME_SEQ > " + maxCount); strBui.append(sql); } } } System.out.println("计算遗漏值时间--End >>>>>>> "+DateUtils.formatDateTime(new Date())); Pwfci.SQLinsertValue(strBui.toString()); strBui.setLength(0); } }
java远程调用.net webservice服务,服务端接收到了请求,但是接收到参数的为null
我用java远程调用.net webservice服务,服务端接收到了请求,但是服务端接收到参数的为null呢? public String callServiceEsbGFY(BsServiceDict bsdVo, String custIdValue, Map<String, Object> servParam) throws SysException, AppException { //System.out.println("servParam"+servParam.toString()); String retMsg = null; String serviveCode = (String) servParam.get("code"); servParam.remove("code"); //String soapActionURI = "http://tempuri.org/selectVIN"; //处理入参 String str="<?xml version=\"1.0\" encoding=\"gb2312\"?><rows><row "; Set<String> keys = servParam.keySet(); if(keys != null) { Iterator<String> iterator = keys.iterator(); while(iterator.hasNext()) { String key =iterator.next(); str=str+key+"="+"\""+servParam.get(key)+"\""+" "; } str=str+"></row></rows>"; } String endpoint =bsdVo.getServiceAddress(); String methodStr = bsdVo.getMethodName(); String input = bsdVo.getInParam(); try { input=input.replace(Constants.STRING_CHARACTER_GFY, str); //用户密码替换 String password = ToolUtil.MD5Encrept(Constants.STRING_USERPASSWORD_INFO, Constants.INTEGER_FORMD5_32); input=input.replace(Constants.STRING_USERPASSWORD_GFY, password); //当前时间替换 Date date = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式 String dateFormat = df.format(date); log.info("dateFormat@@@@@@"+dateFormat); input=input.replace(Constants.STRING_CREATETIMEINFO_GFY, dateFormat); /** *1、A = 变量用户MD5密钥值转为UTF8字符串 *2、B = 变量报文时间戳值转为UTF8字符串 *3、C = 变量业务逻辑 *3、D = A与B异或运算,运算时计算长度以A和B值中字符长度短的为准,将D的值转为BASE64字符串 **/ String baseInfo = ToolUtil.twoStringXor(password,dateFormat); log.info("baseInfo#######333 : "+baseInfo); //计算最后签名的值 String character = ToolUtil.changeToSHA(str,Constants.STRING_FORHASHCODE_256); String sign = ToolUtil.changeToSHA(character+baseInfo,Constants.STRING_FORHASHCODE_256); //将模板中的签名替换掉 input=input.replace(Constants.STRING_SIGNINPUT_GFY, sign); //替换调用接口code log.info("serviveCode$$$$$$$$$$$$"+serviveCode); input=input.replace(Constants.STRING_SERVICECODE_GFY, serviveCode); log.info("111111111111111111111111111111111111111111111111111111111111"); log.info("input=="+input); log.info("222222222222222222222222222222222222222222222222222222222222"); AxisProperties.setProperty("axis.socketSecureFactory", "org.apache.axis.components.net.SunFakeTrustSocketFactory"); org.apache.axis.client.Service service = new org.apache.axis.client.Service(); Call call = (Call) service.createCall(); String endpoint1 = "http://IPMCH.ESB.TopSchemaV2"; call.setTargetEndpointAddress (new java.net.URL(endpoint)); call.setOperationName(new QName( endpoint1 , methodStr)); call.setUseSOAPAction(true); call.setSOAPActionURI("http://IPMCH.ESB.TopSchemaV2/CallESB"); call.addParameter( "arg0", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); retMsg = (String) call.invoke(new Object[] {input} ); } catch (Exception e) { retMsg = "10000"; e.printStackTrace(); throw new SysException("","XmlException:OrderReceive.buildOrderReceiveXML():"+e.getMessage(),e); } return retMsg; }
SSH架构可以让Controller,Service,Dao层之间的全局变量共享吗?
例如我在Service层中定义一个Map<String,Object> map 我在Controller层也定义一个相同的Map,他俩之间可以通过set/get方式共享数据吗?
相见恨晚的超实用网站
搞学习 知乎: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
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网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或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
深深的码丨Java HashMap 透析
HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary,HashMap、TreeMap继承自AbstractMap,三者均实现Map接口 **HashTab:**同步哈希表,不支持null键或值,因为同步导致性能影响,很少被使用 **HashMap:**应用较多的非同步哈希表,支持null键或值,是键值对...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
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)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱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 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
相关热词 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件 c#注册dll文件 c#安装.net
立即提问