为什么要这样定义一个成员?定义两遍testname? 5C

public class Test
{
private string _testname;
public string testname
{
set { _testname = value; }
get { return _testname; }
}
public Test():this("test")
{ }
public Test(string test)
{
this.testname = test;
}

2个回答

这是C#早期的写法,前面是私有的字段,后面是属性,写法上的确如你所想的,很罗嗦。
C# 3.0(VS2008+)以后可以写

public class Test
{
public string testname { get; set; } //这一行就相当于你前面那两遍重复的定义
public Test():this("test") //这里定义了2个构造函数,这个是无参数构造函数,调用了下面的有参数构造函数
{ }
public Test(string test)
{
this.testname = test;
}

顺便说下,这种代码的写法是很常见的,微软的类库就是这么写的(我随便找的两个源代码,你也可以去看别的,是不是都这么写)

图片说明

图片说明

来自 https://referencesource.microsoft.com/

private string _testname; 属于字段

public string testname
{
set { _testname = value; }
get { return _testname; }
} 属于属性

这样定义是为了让外部只能通过属性来访问字段
字段是 private的
属性是public 的
当然你这个例子在编码规范上有点问题。
正确的编码规范是
字段首字母小写 应为他是一个变量
属性首字母要大写

如有问题可以继续评论。
望采纳
图片说明

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复狂奔De鸵鸟: 问题的关键是“当然你这个例子在编码规范上有点问题。”你说的这个毫无根据。
14 天之前 回复
qq_37290697
狂奔De鸵鸟 回复贵阳老马马善福专业维修游泳池堵漏防水工程: 其实命名规范是人们为了方便代码阅读而定义规范,这类规范并没有说谁对谁错,谁的就一定是最好的,在使用命名规则时一是考虑某个项目的命名规则一致性,二是考虑和公司规定的命名规则的一致性。说白了它不影响代码的运行,是为了方便自己和其他人阅读代码,以及代码的美观性。
14 天之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 编程风格就是要向类库靠拢。同样是C语言,我用VC++,我定义一个函数叫做 FindFile,定义一个变量叫做 lpszFileName,用在Linux下就写 fndfile。如果我拿到一个使用匈牙利命名的C#源代码去维护,尽管这不符合我的习惯,但是我还是要按照它原有的风格来写代码。
14 天之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 code snippet\包括msdn 的example是由低级别的开发者编写的,所以风格上不是很一致,但是作为保准来说,应该尽量和 .net 类库的风格保持一致。
14 天之前 回复
qq_37290697
狂奔De鸵鸟 回复贵阳老马马善福专业维修游泳池堵漏防水工程: 你可以查看我更新的回答。有截图。这是vs2019 配置了最新的命名规范检测。
14 天之前 回复
qq_37290697
狂奔De鸵鸟 回复贵阳老马马善福专业维修游泳池堵漏防水工程: 你可以在类里申明一个字段,右键选择重构一个属性,官方在字段与属性的对应命名规则是推荐字段以小写字母开头。而属性以大写字母开头
14 天之前 回复
qq_37290697
狂奔De鸵鸟 回复贵阳老马马善福专业维修游泳池堵漏防水工程: 第二 本例说明的不是局部变量,是字段与属性的对应关系,当然用下划线作为字段变量的头是可以的。并不会影响使用,然在c#里并不推荐类似的命名规范。这种命名习惯来源于早起的c语言命名习惯
14 天之前 回复
qq_37290697
狂奔De鸵鸟 回复贵阳老马马善福专业维修游泳池堵漏防水工程: 第一字段是private属性是public 是针对本例来说明,并未强调所有的申明都必须这样
14 天之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 说字段是private,而属性是public也以偏概全。还是相同的链接,自己去看微软怎么写。
15 天之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 说局部变量下划线开头的“不规范”这个就扯了。随便看看 .net 源代码:https://referencesource.microsoft.com/#System.Web/UI/ControlAdapter.cs4ffe6976d0a75c70 你看微软自己怎么写的。 恰恰你所谓的“规范“才是不规范。
15 天之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python Pyqt5 中GUI变量无法调用
``` #windowsUI.py——自动生成的GUI界面 class Ui_winUI(object): def setupUi(self, winUI): winUI.setObjectName("winUI") winUI.resize(1200, 614) winUI.setMinimumSize(QtCore.QSize(1200, 614)) winUI.setMaximumSize(QtCore.QSize(1200, 614)) winUI.setIconSize(QtCore.QSize(3 ``` ``` #Info.py——需要调用windowsUI里面的参数,如:获取用户输入的name值 class MainInfo(QMainWindow,windowsUI.Ui_winUI): def __init__(self): QMainWindow.__init__(self) self.setupUi(self) self.btn_request.clicked.connect(self.fill_in) def fill_in(self): name = self.line_name.text() #获取GUI界面‘名字’的值赋给name print(name) #运行这个py文件,测试name可以正常输出 testname=‘测试姓名’ ``` ``` #run.py 问题就在这里,我想让info.py里面的name从这里调用,发现报错未定义 class MainCode(QMainWindow,windowsUI.Ui_winUI): def __init__(self): super(QMainWindow, self).__init__() self.setupUi(self) self.info=Info.MainInfo() self.btn_request.clicked.connect(self.ce) def ce(self): a=self.info.name print(a) #这里用了好几种方法都报错未定义 print(testname)#直接定义的变量则可以输出 if __name__ == '__main__': app = QApplication(sys.argv) md = MainCode() md.show() sys.exit(app.exec_()) ``` 想请问一下大佬们,这个info.py里面定义的变量(值来自GUI),怎么才能让run.py里面可以顺利调用??
麻烦大神看看我的这段jsp代码的逻辑是哪里有问题?
``` <script> var userList = []; var i = 1; var addName = "userId"; var ck = document.getElementsByName("checkbox"); function delAll() { for(i; i<${userPageInfo.total}; i++){ var testName = addName+i; if(i=20){ alert(testName); } } } </script> ``` 这是我用来测试的代码,可以看出: 点击删除后,会执行这段程序,在i=20的时候会弹出消息框 | 但是 | ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577670218_922903.png) ++++++++ ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577670042_598268.png) +++++++++ ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577670054_218480.png) ++++++++++++ ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577670073_594808.png) +++++++++ 总结起来就是程序在i=1和i=21时弹出消息框,而且一直在21的时候循环 | 为什么会这样呢?
DB2 Drop index TestName
大神们, 请问下, db2 中 drop index TestName; 如果不存在TestName,控制中心会报错. 现在 DB2中没有 drop index if exists TestName的 方法,一直没查找到方法,用于先判断的, 再删除的, 有了解的,给点提示, 谢谢了
Entity Framework使用Code First 插入数据时,多出来额外的数据
在项目总使用Code First遇到坑爹的问题了 例如我有如下类: public class Catalog { public Int32 ID { get; set; } public String CatalogName { get; set; } public Catalog() { } public Catalog(Int32 ID, String Name) { this.ID = ID; this.CatalogName = Name; } } 然后有另一个类引用该类: public class CatalogClassify { public Int32 ID { get; set; } public Catalog catalog { get; set; } public String Name { get; set; } public CatalogClassify(){ }     public CatalogClassify(Int32 ID, Catalog catalog, String Name){ this.ID = ID; this.catalog = catalog; this.Name = Name; } } 这两个类都映射到数据库中并存储起来。 假如我已有一个Catalog对象映射到数据库其数据库中相应的数据为:{1,"MyName"}; 而我现在要一个CatalogClassify对象也插入到数据中其代码为: Catalog catalog = new Catalog(1,"MyName") CatalogClassify myCatalog = new CatalogClassify(1,catalog,"TestName"); 然后在将myCatalog对象插入到数据库中,这时会发现在Catalog对象对应的表中有两行数据,分别为{1,"MyName"},{2,"MyName"}. 但是这不是我想要的结果,我只是想让myCatalog对象引用一个已有的Catalog对象,而不是在数据库中创建任何新的数据了。 求大神提供解决方案啊
hibernate 循环遍历 list对象,只保存最后一条数据,偶现
@Transactional(readOnly = false, propagation = Propagation.REQUIRED) public String rankScoreIn(MultipartFile file, String classid, String testname, String grad, String subject) { StringBuilder failureMsg = new StringBuilder(); int successNum = 0; int failureNum = 0; Classname classname = null; // 班级信息 if (!StringUtils.isEmpty(classid)) { classname = classnameService.get(classid); grad = classname.getGrad(); } Organization organization = SiteUtil.getSite().getOrg(); try { ImportExcel ei = new ImportExcel(file, 1, 0); String subjectid = DictUtils.getDictValue(subject, Constants.SUBJECT, "0"); // 获得试卷信息 List<Testpaper> testpaperls = testpaperService.findByGrad(grad, testname, new Integer(subjectid)); Testpaper testpaper = null; if (testpaperls != null && testpaperls.size() > 0) { testpaper = testpaperls.get(0); } else { return "<br/>年级:"+grad+" 没有"+subject+"科目试卷"; } // 班级题目质量分析 List<StudentRank> list = ei.getDataListForScore(StudentRank.class, 3, subject); for (StudentRank studentRank : list) { try { successNum = this.saveRankScore(studentRank, classname, testpaper, organization, successNum); } catch (ConstraintViolationException ex) { failureMsg.append("<br/>考号: " + studentRank.getTestno() + " 导入学生成绩排名失败:"); List<String> messageList = BeanValidators .extractPropertyAndMessageAsList(ex, ": "); for (String message : messageList) { failureMsg.append(message + "; "); failureNum++; } } catch (Exception ex) { ex.printStackTrace(); failureMsg.append("<br/>考号: " + studentRank.getTestno() + " 导入学生成绩排名失败:" + ex.getMessage()); } } if (failureNum > 0) { failureMsg.insert(0, ",失败 " + failureNum + " 条问题得分,导入信息如下:"); } } catch (Exception e) { e.printStackTrace(); return "导入问题得分失败!失败信息:" + e.getMessage(); } return "已成功导入 " + successNum + " 条问题得分" + failureMsg.toString(); } public int saveRankScore(StudentRank studentRank, Classname classname, Testpaper testpaper, Organization organization, int successNum) { // 判断学生是否存在 String classnamestr = studentRank.getClassname().getClassname(); Classname classnameexist = classnameService.findByGradclass( testpaper.getGrad(), classnamestr); if (null == classnameexist) { // 不存在则创建 if (classname == null) { classname =studentRank.getClassname(); classname.setGrad(testpaper.getGrad()); classname.setClassname(classnamestr); classname.setSchool(organization); classname.setCreateTime(new Date()); classnameService.save(classname); Student student = studentRank.getStudent(); student.setClassname(classname); student.setGrad(testpaper.getGrad()); student.setPassword("123456"); student.setCreateTime(new Date()); studentService.save(student); studentRank.setClassname(classname); studentRank.setStudent(student); } else { // 如果班级存在判断学生是否存在?????????????? Student student = this.createStudent( studentRank.getStudent(), classname, testpaper); studentRank.setClassname(classname); studentRank.setStudent(student); } } else { // 如果班级存在判断学生是否存在?????????????? Student student = this.createStudent(studentRank.getStudent(), classnameexist, testpaper); studentRank.setClassname(classnameexist); studentRank.setStudent(student); } studentRank.setTestpaper(testpaper); studentRank.setCreateTime(new Date()); studentRankService.save(studentRank); successNum++; return successNum; } 代码 if (null == classnameexist) { // 不存在则创建 if (classname == null) { 这两个条件都满足时,只保存最后一条,其他条件则可以保存正常 请问是什么原因?
nvelocity中的#if()如何在JavaScript中使用?
nvelocity中的if跟JavaScript中的if关键字冲突了,怎么想办法可以用nvelocity中的#if ``` <script type="text/javascript"> function GetTestType() { var s = document.getElementById("testType"); $selectedType =s.options[s.selectedIndex].text; alert($selectedType); var n = document.getElementById("testName"); #foreach($row in $Data.testData) #if($row.TestType==$selectedType) n.options.add(new Option("text", "value")); #end #end } </script> ``` 这个是按照你的改的: ``` </head> <script src="../javascript/jquery-1.7.2.js" type="text/javascript"></script> <script type="text/javascript"> var testData = $Data.testData; function GetTestType() { var s = document.getElementById("testType"); var n = document.getElementById("testName"); var selectedType = s.options[s.selectedIndex].text; var i; for (i = n.length-1; i >=0; --i) { n.remove(i); } alert(testData.length); //这个没反应。。。说明testData没有被赋值。 for (i = 0; i < testData.length; ++i) { var row = testData[i]; if (row.TestType == selectedType) { n.options.add(new Option(row.TestName, row.Id)); } } } </script> <script type="text/javascript"> function GetSelectedId() { var s = document.getElementById("testName"); $selectedId = s.options[s.selectedIndex].id alert($selectedId); } </script> <body> ``` ![图片说明](https://img-ask.csdn.net/upload/201501/11/1420971854_221131.png)
在应使用条件的上下文(在 ';' 附近)中指定了非布尔类型的表达式。这个问题如何解决?
行 46: string sqlstr = "select Place=(SELECT COUNT(DISTINCT totalScore) FROM T_TestMark WHERE a.totalScore &gt;= a.totalScore) as 名次,b.userID as 用户名, a.totalScore as 成绩 FROM T_TestMark AS a INNER JOIN T_TestRecorder AS b ON a.recorderID = b.recorderID where testID=(select testID from T_Test where testName='" + DropDownList1.SelectedValue + "') ORDER BY Place"; 行 47: SqlCommand comm = new SqlCommand(sqlstr, conn); 行 48: SqlDataReader dr = comm.ExecuteReader(); 行 49: GridView1.DataSource = dr; 行 50: GridView1.DataBind(); 提示在48行处出现问题 我应该怎么修改??代码是从书上打的,SQL语句是自己写的,不知道是否正确
如何改变DropDownLis使得Repeater里内容更新?
有三个表 Mark markid | recorderID | tatalScore 1 319 10 2 320 30 Recorder testID | recorderID | userID 5 319 aa 6 320 bb Test testID | testName 5 数学 6 英语 我的Repeater中的查询本来是SELECT Place=(SELECT COUNT(DISTINCT totalScore) FROM Mark WHERE a.totalScore >= a.totalScore),b.userID, a.totalScore FROM Mark AS a INNER JOIN Recorder AS b ON a.recorderID = b.recorderID ORDER BY Place DropDownLis中是数学,英语之类的集合 当我想更新Repeater时,将查询改为 SELECT Place=(SELECT COUNT(DISTINCT totalScore) FROM Mark WHERE a.totalScore >= a.totalScore),b.userID, a.totalScore FROM Mark AS a INNER JOIN Recorder AS b ON a.recorderID = b.recorderID where b.testID=(select testID from T_Test where testName="+ DropDownList1.SelectedValue+") ORDER BY Place 为什么无法查询出来?
请教各位大神,求个SQL查询
一个表A Index,Quality,Value,Time 1,192,0,2016-12-16 00:00:00 1,84,1,2016-12-16 00:01:00 1,84,2,2016-12-16 00:02:00 1,84,3,2016-12-16 00:03:00 1,192,4,2016-12-16 00:04:00 1,192,5,2016-12-16 00:05:00 1,84,6,2016-12-16 00:06:00 1,84,7,2016-12-16 00:07:00 1,84,8,2016-12-16 00:08:00 1,192,9,2016-12-16 00:09:00 1,84,10,2016-12-16 00:10:00 1,192,11,2016-12-16 00:11:00 另一个表B Index,Name 1,TestName 现在要查询一个结果: Index,Name,Value,Quality,StartTime,EndTime 1,TestName,1,84,2016-12-16 00:01:00,2016-12-16 00:04:00 1,TestName,2,84,2016-12-16 00:02:00,2016-12-16 00:04:00 1,TestName,3,84,2016-12-16 00:03:00,2016-12-16 00:04:00 1,TestName,6,84,2016-12-16 00:06:00,2016-12-16 00:09:00 1,TestName,7,84,2016-12-16 00:07:00,2016-12-17 00:09:00 1,TestName,8,84,2016-12-16 00:08:00,2016-12-16 00:09:00 1,TestName,10,84,2016-12-16 00:10:00,2016-12-16 00:11:00 简单解释就是查找Quality不是192的数据,并记录该条数据的Time为StartTime, 然后查找这条数据的Time之后第一条Quality为192的数据,并记录该条的Time为EndTime
Delphi使用ADO编程时候报错,急求解释
Delphi使用ADO进行数据库编程时,执行SQL会报错,下面是详细的说明 # 有三种方式拼接SQL **方式1会报错**:ORA-00937: not a single-group group function adoquery.Close; adoquery.SQL.Text := 'select count(*) icount from testtable where testno = :no and testname = :name '; adoquery.Parameters.ParamByName('no').Value := Number; adoquery.Parameters.ParamByName('name').Value := Name; adoquery.Open; adoquery.First; Result := adoquery.FieldByName('icount').AsInteger ; **方式2可以执行** adoquery.Close; adoquery.SQL.Text := Format('select count(*) icount from testtable where testno = ''%s'' and testname = ''%s'' ', [Number, Name]); adoquery.Open; adoquery.First; Result := adoquery.FieldByName('icount').AsInteger ; **方式3可以执行** adoquery.Close; adoquery.SQL.Text := 'select * from ( select count(*) from testtable where testno = :no and testname = :name )'; adoquery.Parameters.ParamByName('no').Value := Number; adoquery.Parameters.ParamByName('name').Value := Name; adoquery.Open; adoquery.First; Result := adoquery.Fields[0].AsVariant # 补充说明: 第一种报错的SQL方式是在MSDAORA.1驱动下报错,但是使用OraOLEDB.Oracle.1驱动可以 # 到底是为什么
此处为啥一直报找不到文件的异常:java.io.FileNotFoundException: Template "contextxml.ftl" not found.
public class ExportToXmlUtil { private Configuration configuration = null; public ExportToXmlUtil(){ configuration = new Configuration(); // configuration.setDefaultEncoding("UTF-8"); } public static void main(String[] args) { ExportToXmlUtil test = new ExportToXmlUtil(); test.createContextXml(); } public void createContextXml(){ Map<String,String> dataMap=new HashMap<>(); getData(dataMap); configuration.setClassForTemplateLoading(this.getClass(), "classpath:/template"); //FTL文件所存在的位置,放在与java相同的包下 Template t=null; try { t = configuration.getTemplate("contextxml.ftl"); //文件名 } catch (IOException e) { e.printStackTrace(); } File outFile = new File("D:/forK8sOutFile/context.xml"); //生成文件的路径 Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); } catch (FileNotFoundException e1) { e1.printStackTrace(); } try { t.process(dataMap, out); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //这里赋值的时候需要注意,xml中需要的数据你必须提供给它,不然会报找不到某元素错的. private Map<String,String> getData(Map<String, String> dataMap) { dataMap.put("name", "testName"); dataMap.put("auth", "testAuth"); return dataMap; } } 我的项目结构图随后附上
求教,cmake找不到库,帮帮忙,感激
1.cmake老是提示找不到boost库![图片说明](https://img-ask.csdn.net/upload/201505/20/1432082094_997788.png) 2.我增加了link_directories(F:/Proj/20150519/superviseddescent-master/superviseddescent-master/boost_1_54_0/lib64-msvc-10.0)还是没有用 3.cmakelist.text 主 ``` project(superviseddescent) cmake_minimum_required(VERSION 2.8.7) set(superviseddescent_VERSION_MAJOR 0) set(superviseddescent_VERSION_MINOR 3) set(superviseddescent_VERSION_PATCH 0) set (BOOST_ROOT,"F:/Proj/20150519/superviseddescent-master/superviseddescent-master/boost_1_54_0") set(Boost_LIBRARIES,"F:/Proj/20150519/superviseddescent-master/superviseddescent-master/boost_1_54_0/lib64-msvc-10.0") message(STATUS "BOOST_ROOT: ${BOOST_ROOT}") # g++ needs a compiler flag to enable C++11 support include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-std=c++11 HAS_CXX11_FLAG) if (HAS_CXX11_FLAG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() # All the options for building the library. Can be changed on the command-line or in initial_cache.cmake. message(STATUS "Options:") option(BUILD_TESTS "Builds the unit tests." ON) message(STATUS "BUILD_TESTS: ${BUILD_TESTS}") option(BUILD_EXAMPLES "Build the example applications." ON) message(STATUS "BUILD_EXAMPLES: ${BUILD_EXAMPLES}") option(BUILD_DOCUMENTATION "Build the library documentation." ON) message(STATUS "BUILD_DOCUMENTATION: ${BUILD_DOCUMENTATION}") # Build a CPack driven installer package: include(InstallRequiredSystemLibraries) # This module will include any runtime libraries that are needed by the project for the current platform set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") set(CPACK_PACKAGE_VERSION_MAJOR "${superviseddescent_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${superviseddescent_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${superviseddescent_VERSION_PATCH}") include(CPack) #set(Boost_USE_STATIC_LIBS OFF) # Find dependencies: find_package(OpenCV 2.4.3 REQUIRED core) message(STATUS "OpenCV include dir found at ${OpenCV_INCLUDE_DIRS}") message(STATUS "xxxxxxBoost found at ${Boost_INCLUDE_DIRS}") message(STATUS "OpenCV lib dir found at ${OpenCV_LIB_DIR}") link_directories(F:/Proj/20150519/superviseddescent-master/superviseddescent-master/boost_1_54_0/lib64-msvc-10.0) link_directories(F:/Proj/20150519/superviseddescent-master/superviseddescent-master/boost_1_54_02/bin/vc10/lib) find_package(Boost 1.48.0 COMPONENTS system serialization REQUIRED) if(Boost_FOUND) #message(STATUS "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa ${Boost_INCLUDE_DIRS}/bin/vc10/lib") message(STATUS "Boost found at ${Boost_INCLUDE_DIRS}") else(Boost_FOUND) message(FATAL_ERROR "Boost not found") endif() message(STATUS "xxxxxxxxxxxxxxxxxxxxxxxx ${Boost_LIBRARIES}") set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) find_package(Eigen3 REQUIRED) message(STATUS "Eigen3 found: ${EIGEN3_FOUND}") message(STATUS "Eigen3 include dir found at ${EIGEN3_INCLUDE_DIR}") message(STATUS "Eigen3 version: ${EIGEN3_VERSION}") # Source and header files set(HEADERS include/superviseddescent/superviseddescent.hpp include/superviseddescent/regressors.hpp include/superviseddescent/matserialisation.hpp include/superviseddescent/utils/ThreadPool.h ) # Add header includes: include_directories("include") include_directories(${Boost_INCLUDE_DIRS}) include_directories(${OpenCV_INCLUDE_DIRS}) include_directories(${EIGEN3_INCLUDE_DIR}) # The install target: install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION include) if(BUILD_TESTS) message(STATUS "Configuring gtest-1.7.0...") set(gtest_force_shared_crt ON CACHE BOOL "Use shared (DLL) run-time lib (CRT) even when Google Test is built as static lib.") # THIS IS NEWEST add_subdirectory(3rdparty/gtest-1.7.0) message(STATUS "Finished configuring gtest.") enable_testing() # Enables CTest add_custom_target(check-dbg COMMAND ${CMAKE_CTEST_COMMAND} -V -C Debug) # to get detailed output on VS add_custom_target(check-rel COMMAND ${CMAKE_CTEST_COMMAND} -V -C Release) add_subdirectory(test) endif() if(BUILD_EXAMPLES) add_subdirectory(examples) endif() if(BUILD_DOCUMENTATION) add_subdirectory(doc) endif() ``` cmakelist.text 子文件夹 ``` # Unit tests # ========== # Note: All the variables in here are inherited from the parent CMakeLists find_package(OpenCV 2.4.3 REQUIRED core) message(STATUS "OpenCV include dir found at ${OpenCV_INCLUDE_DIRS}") message(STATUS "OpenCV lib dir found at ${OpenCV_LIB_DIR}") message(STATUS "OpenCV lib dir aaaaaat ${OpenCV_LIB_DIR}") include_directories(${gtest_SOURCE_DIR}/include) set(TEST_LINREG1D test_LinearRegressor1D) add_executable(${TEST_LINREG1D} test_LinearRegressor1D.cpp) #link_directories(${BOOST_ROOT}/bin/vc10/lib) target_link_libraries(${TEST_LINREG1D} ${OpenCV_LIBS} ${Boost_LIBRARIES} gtest_main gtest) add_test(${TEST_LINREG1D} ${TEST_LINREG1D}) # Syntax: testname exename set(TEST_LINREGND test_LinearRegressorND) add_executable(${TEST_LINREGND} test_LinearRegressorND.cpp) target_link_libraries(${TEST_LINREGND} ${OpenCV_LIBS} ${Boost_LIBRARIES} gtest_main gtest) add_test(${TEST_LINREGND} ${TEST_LINREGND}) set(TEST_SDO test_SupervisedDescentOptimiser) add_executable(${TEST_SDO} test_SupervisedDescentOptimiser.cpp) target_link_libraries(${TEST_SDO} ${OpenCV_LIBS} ${Boost_LIBRARIES} gtest_main gtest) add_test(${TEST_SDO} ${TEST_SDO}) ``` 4.目录如下![图片说明](https://img-ask.csdn.net/upload/201505/20/1432082538_83078.png) 5.boost目录![图片说明](https://img-ask.csdn.net/upload/201505/20/1432082621_906489.png) 6.boost库![图片说明](https://img-ask.csdn.net/upload/201505/20/1432082701_66544.png)
MySQL的Varchar只能插入一个中文字符,为什么??
在安装MySQl的时候,安装选择的字符集是UTF8,之后建立了数据表: CREATE TABLE test ( id BIGINT NOT NULL, testname VARCHAR(10) DEFAULT NULL, testdesc VARCHAR(20) DEFAULT NULL, teststate INTEGER DEFAULT 0, testtype INTEGER DEFAULT 0, PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 在插入全英文的数据时,正常插入。 如: insert into test(id,testname,testdesc,teststate,testtype) values (1,'abcdefghij','abcdefghijklmn',10,10); 当插入中文时,出现了一下问题: insert into test(id,testname,testdesc,teststate,testtype) values (2,'一','abcdefghijklmn',10,10); 这条插入正常。 insert into test(id,testname,testdesc,teststate,testtype) values (3,'一二','abcdefghijklmn',10,10); 这条插入失败,提示:Data too long for column 'testname' at row 1 我想是不是因为每个汉字占用6个字节,所以长度不够,于是我重建了表,将VARCHAR(10)修改为VARCHAR(50),之后再插入第三条记录,依旧提示:Data too long for column 'testname' at row 1 请问这是怎么回事? [b]问题补充:[/b] 肯定是出现了问题我才上来问的! 你答不了就一句我骗人。 你想看图!我传了图! [b]问题补充:[/b] 之前之一用GBK编码,没出过问题!这次需要使用UTF8,我就重新安装了数据库!但出现这样的问题!我的my.ini文件中,也是如下的设置: [mysql] default-character-set=gbk [b]问题补充:[/b] 哦,刚才补充错了! my.ini [mysql] default-character-set=utf8 [b]问题补充:[/b] 多谢xiao1230提供的信息。 这个问题依旧在我这里没有解决。 最初怀疑是用了SQLyog这个MySQL的工具,导致内容被转码后存储进数据库,再后来连直接敲打都不成功。 我也是第一次遇到这样奇怪的问题。连头绪都没有。 我准备重新安装一次数据库试试。
emacs进行gdb调试的相关问题
为什么打开gdb后无法调试?这是因为我的程序哪里有问题嘛?![图片说明](https://img-ask.csdn.net/upload/201603/14/1457938544_695947.png) 以下是我的程序: #include <iostream> #include <stdio.h> #include <vector> #include <string> using namespace std; struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; BinaryTreeNode* CreateBinaryTreeNode(int value) { BinaryTreeNode* pNode = new BinaryTreeNode(); pNode->m_nValue = value; pNode->m_pLeft = NULL; pNode->m_pRight = NULL; return pNode; } void ConnectTreeNodes(BinaryTreeNode* pParent, BinaryTreeNode* pLeft, BinaryTreeNode* pRight) { if(pParent != NULL) { pParent->m_pLeft = pLeft; pParent->m_pRight = pRight; } } void PrintTreeNode(BinaryTreeNode* pNode) { if(pNode != NULL) { printf("value of this node is: %d\n", pNode->m_nValue); if(pNode->m_pLeft != NULL) printf("value of its left child is: %d.\n", pNode->m_pLeft->m_nValue); else printf("left child is null.\n"); if(pNode->m_pRight != NULL) printf("value of its right child is: %d.\n", pNode->m_pRight->m_nValue); else printf("right child is null.\n"); } else { printf("this node is null.\n"); } printf("\n"); } void PrintTree(BinaryTreeNode* pRoot) { PrintTreeNode(pRoot); if(pRoot != NULL) { if(pRoot->m_pLeft != NULL) PrintTree(pRoot->m_pLeft); if(pRoot->m_pRight != NULL) PrintTree(pRoot->m_pRight); } } void DestroyTree(BinaryTreeNode* pRoot) { if(pRoot != NULL) { BinaryTreeNode* pLeft = pRoot->m_pLeft; BinaryTreeNode* pRight = pRoot->m_pRight; delete pRoot; pRoot = NULL; DestroyTree(pLeft); DestroyTree(pRight); } } void FindPathToLeaf(BinaryTreeNode* pNode,int expectedSum, vector<int>& ivec, int& currentSum); void FindPath(BinaryTreeNode* pRoot, int expectedSum) { cout<<"Begin in here:"; if(pRoot==NULL) return; vector<int> ivec; int currentSum=0; FindPathToLeaf(pRoot,expectedSum,ivec,currentSum); } void FindPathToLeaf(BinaryTreeNode* pNode,int expectedSum, vector<int >& ivec, int& currentSum) { currentSum+=pNode->m_nValue; ivec.push_back(pNode->m_nValue); bool isLeaf=pNode->m_pLeft==NULL&&pNode->m_pRight==NULL; if(isLeaf&&expectedSum==currentSum) { cout<<"A path is:"; for(vector<int>::iterator i=ivec.begin();i<ivec.end();i++) { cout<<(*i)<<" "; } } if(pNode->m_pLeft!=NULL) FindPathToLeaf(pNode->m_pLeft, expectedSum, ivec, currentSum); if(pNode->m_pRight!=NULL) FindPathToLeaf(pNode->m_pRight, expectedSum, ivec, currentSum); currentSum-=pNode->m_nValue; ivec.pop_back(); } void Test(char* testName, BinaryTreeNode* pRoot, int expectedSum) { if(testName != NULL) printf("%s begins:\n", testName); FindPath(pRoot, expectedSum); printf("\n"); } // 10 // / \ // 5 12 // /\ // 4 7 // 有两条路径上的结点和为22 void Test1() { BinaryTreeNode* pNode10 = CreateBinaryTreeNode(10); BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5); BinaryTreeNode* pNode12 = CreateBinaryTreeNode(12); BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4); BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7); ConnectTreeNodes(pNode10, pNode5, pNode12); ConnectTreeNodes(pNode5, pNode4, pNode7); printf("Two paths should be found in Test1.\n"); char str[]="Test1"; Test(str, pNode10, 22); DestroyTree(pNode10); } int main(int argc,char* argv[]) { Test1(); return 0; }
获得select中option的value值
``` request.getParameter("");获得selsct中option的value值 下拉框<option>由getdataset()初始化,用下拉框选择某个option后,datasetpath = request.getParameter("");怎么获得<option>中的value值(路径),option有多个每个都有对应的value ``` 。![图片说明](https://img-ask.csdn.net/upload/201804/07/1523074392_447307.png) 下拉框部分: ``` div class="col-xs-3"> select class="form-control" name="select_dataset" id="select_dataset" </select </div 初始化函数 function getdatasets(){ $.ajax({ type : "POST", url:"<%=contextPath%>/getDatasets", data : { type : "0", testname : "自动分类", }, dataType : "json", async : false, context : null, success : function(jsonData) { if (jsonData && jsonData != '[]') { //下拉菜单选项显示数据库名,值为数据库的真实地址 var dataList = jsonData; var select_dataset = $("#select_dataset"); select_dataset.html(''); var inner = ""; for(var i = 0; i<dataList.length; i++){ var a=0; for(j=0;j<=i;j++){ if(dataList[i].dataset==dataList[j].dataset) a++; else continue; } if(a<=1) inner += "<option value= '"+dataList[i].datasetpath +"'>" + dataList[i].dataset + "</option>"; else continue; //inner += "<option value='" + dataList.get(i).getDatasetPath() +"'>" + dataList.get(i).getDataset() + "</option>"; } $("#select_dataset").append(inner); } } }); } 请求: if(isupload == 1){ datasetpath = request.getParameter("select_dataset"); } ```
itext生成PDF 表格内容循环不出来 要不就是循环的JSON最后一个字段 传的是个JSON
![图片说明](https://img-ask.csdn.net/upload/201602/02/1454382728_597963.png) package com.pgs.core.util.print; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Vector; import net.sf.json.JSONArray; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import com.pgs.core.util.JsonUtil; import com.pgs.manage.system.bean.MainAreaCode; /** * * Title: PrinterBHD.java Description:补货单 * * @author songtao * @created 2016-1-29 下午1:45:47 */ public class PrinterBHD { /** * 导出pdf * * @throws Exception */ public static boolean printBHD(String json,int rownumber) { /* * Vector v = new Vector();//dao.selectEx(sql, 0); Map info = (HashMap) * v.get(0); */ // Map info = (HashMap)map.get("aaData"); Rectangle rectPageSize = new Rectangle(PageSize.A4); rectPageSize = rectPageSize.rotate(); Document doc = new Document(rectPageSize, 23, 25, 10, 10); Document document = null; try { BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 设置中文字体 // 第一步:创建一个document对象。 document = new Document(); // 第二步:创建一个PdfWriter实例,将文件输出流指向一个文件。 PdfWriter.getInstance(document, new FileOutputStream( "D:/test/1.pdf")); // 第三步:打开文档。 document.open(); rectPageSize = rectPageSize.rotate(); PdfPCell cell = new PdfPCell(); Font tf = new Font(bfChinese, 10, Font.NORMAL); // 标头 Paragraph tpar = new Paragraph("供应商补货单", new Font(bfChinese, 18, Font.NORMAL)); tpar.setAlignment(Paragraph.ALIGN_CENTER); // 描述. float[] w1 = { 50f, 50f, 50f }; PdfPTable table = new PdfPTable(w1); table.setWidthPercentage(100); // json = // "{\"name\":\"admin\",\"retries\":\"3fff\",\"testname\":\"ddd\",\"testretries\":\"asdasdadsdasdasd\"} "; String sss = "[{\"realInspecAmount\":\"0.0000\",\"skuBrand\":\"小米\",\"index\":\"1\",\"skuSpec\":\"50g\",\"skuName\":\"康师傅方便面\",\"hasGift\":\"0\",\"realInspecCount\":\"90\", \"barcode\":\"6973342956023\",\"skuUnit\": \"壶\",\"channelSkuId\":\"56fb08ffc53611e5a4bab82a72d0db4b\",\"skuCode\":\"7334\",\"purchDetailId\":\"4\",\"billDate\":\"\2016-01-28 00:49:28.0\"}]"; json = "{\"realInspecAmount\":\"0.0000\",\"skuBrand\":\"小米\",\"index\":\"1\",\"skuSpec\":\"50g\",\"skuName\":\"康师傅方便面\",\"hasGift\":\"0\",\"realInspecCount\":\"90\", \"barcode\":\"6973342956023\",\"skuUnit\": \"壶\",\"channelSkuId\":\"56fb08ffc53611e5a4bab82a72d0db4b\",\"skuCode\":\"7334\",\"purchDetailId\":\"4\",\"billDate\":\"\2016-01-28 00:49:28.0\"}"; HashMap<String, Object> map = JsonUtil.json2Map(json); // 第一行 cell = new PdfPCell(new Paragraph("供应商编码:" + map.get("realInspecAmount"), tf)); cell.setBorder(0); cell.setPaddingTop(6f); table.addCell(cell); cell = new PdfPCell( new Paragraph("供应商名称:" + map.get("skuBrand"), tf)); cell.setBorder(0); cell.setPaddingTop(6f); table.addCell(cell); cell = new PdfPCell(new Paragraph("送货地址:" + map.get("testretries"), tf)); cell.setBorder(0); cell.setPaddingTop(6f); table.addCell(cell); // 第二行 cell = new PdfPCell(new Paragraph("补货单号:" + "11111111", tf)); cell.setBorder(0); cell.setPaddingBottom(6f); table.addCell(cell); cell = new PdfPCell(new Paragraph("补货制单人:" + "11111111", tf)); cell.setBorder(0); cell.setPaddingBottom(6f); table.addCell(cell); cell = new PdfPCell( new Paragraph("打印日期:" + map.get("billDate"), tf)); cell.setBorder(0); cell.setPaddingBottom(6f); table.addCell(cell); // 表格 float[] width = { 30f, 150f, 150f, 150f, 150f, 150f, 150f, 150f }; PdfPTable table2 = new PdfPTable(width); table2.setWidthPercentage(100); // 头 String[][] titles = { { "序号", "i", "" }, { "商品编码 ", "sku_code", "" }, { "商品名称", "sku_name", "" }, { "条码", "barcode", "" }, { "规格", "sku_spec", "" }, { "销售单位", "sale_min_unit", "" }, { "需求数", "bhd_sum", "" }, { "实收数", "", "" } }; Paragraph content = null; for (int i = 0; i < titles.length; i++) { content = new Paragraph(titles[i][0], tf); content.setAlignment(Paragraph.ALIGN_LEFT); cell = new PdfPCell(content); table2.addCell(cell); } //String sss = "[{\"b\":\"55\",\"a\":\"55\"},{\"b\":\"55\",\"a\":\"55\"},{\"b\":\"55\",\"a\":\"55\"},{\"b\":\"55\",\"a\":\"55\"},{\"b\":\"55\",\"a\":\"55\"},{\"b\":\"55\",\"a\":\"55\"}]"; ArrayList lll = (ArrayList) JSONArray.toList( JSONArray.fromObject(sss), HashMap.class); System.out.println(((HashMap) lll.get(0)).get("skuBrand")); //创建一个N列的表格控件 PdfPTable pdfTable2 = new PdfPTable(titles[7].length); //设置表格占PDF文档100%宽度 pdfTable2.setWidthPercentage(100); //水平方向表格控件左对齐 pdfTable2.setHorizontalAlignment(PdfPTable.ALIGN_LEFT); //创建一个表格的表头单元格 PdfPCell pdfTableHeaderCell = new PdfPCell(); PdfPCell pdfTableContentCell = new PdfPCell(); pdfTableContentCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); pdfTableContentCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //表格内容行数的填充 for(int i = 0;i < rownumber;i++){ for(String tableContentInfo : titles[1]){ pdfTableContentCell.setPhrase(new Paragraph(tableContentInfo, tf)); pdfTable2.addCell(pdfTableContentCell); } } // 脚 Paragraph fpar1 = new Paragraph("验货员:____________________" + "供应商送货人: ____________________" + "收货日期:____________________" + "合计 :_____", tf); // 第四步:在文档中增加一个段落。 document.add(tpar); document.add(table); document.add(table2); document.add(pdfTable2); document.add(fpar1); return true; }catch(FileNotFoundException de) { de.printStackTrace(); System.err.println("pdf file: " + de.getMessage()); return false; }catch(DocumentException de) { de.printStackTrace(); System.err.println("document: " + de.getMessage()); return false; }catch(IOException de) { de.printStackTrace(); System.err.println("pdf font: " + de.getMessage()); return false; }finally{ //关闭PDF文档流,OutputStream文件输出流也将在PDF文档流关闭方法内部关闭 if(document!=null){ document.close(); } } } public static void main(String[] args) { printBHD("", 3); } } /* for (int i = 0; i < lll.size(); i++) { for (int j = 0; j < titles.length; j++) { if (titles[j][1].equals("i")) content = new Paragraph(String.valueOf(i+1), tf); else { // 表格内容 for (Map.Entry<String, Object> entry : map.entrySet()) { content = new Paragraph(entry.getValue().toString(), tf); System.out.println(entry.getValue().toString()); } } content.setAlignment(Paragraph.ALIGN_CENTER); cell = new PdfPCell(content); table2.addCell(cell); } }*/ /*// 脚 Paragraph fpar1 = new Paragraph("验货员:____________________" + "供应商送货人: ____________________" + "收货日期:____________________" + "合计 :_____", tf); // 第四步:在文档中增加一个段落。 document.add(tpar); document.add(table); document.add(table2); document.add(fpar1); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (document != null) { // 第五步:关闭文档。 document.close(); } } return true; }*/
下拉框显示点击的选项
下拉框中利用onclick点击响应添加了<option>(见getdatasets()方法),但下拉的选项无法被选择显示到框里。onchange应该怎么写 ``` <div class="form-group" id="select_now"> <label class="col-xs-3 control-label">选择已有数据集</label> <div class="col-xs-3"> <select class="form-control" name="select_dataset" id="select_dataset" onclick="getdatasets();"> </select> </div> </div> function getdatasets(){ $.ajax({ type : "POST", url:"<%=contextPath%>/getDatasets", data : { type : "0", testname : "自动分类", }, dataType : "json", async : false, context : null, success : function(jsonData) { if (jsonData && jsonData != '[]') { //下拉菜单选项显示数据库名,值为数据库的真实地址 var dataList = jsonData; var select_dataset = $("#select_dataset"); select_dataset.html(''); var inner = ""; for(var i = 0; i<dataList.length; i++){ inner += "<option value= '"+dataList[i].datasetpath +"'>" + dataList[i].dataset + "</option>"; } $("#select_dataset").append(inner); } } }); } ```
jsp页面往后台存储时间类型数据时发生错误Unknown Source
主要问题是前台使用mobiscroll控件写入input控件后 使用form submit提交数据 后台servlet使用getParameter获取input控件值 转换格式后传输到数据库中。数据库字段为mysql的date类型 但是现在报错显示at java.text.SimpleDateFormat.parse(Unknown Source) at java.text.DateFormat.parse(Unknown Source 附上代码 servlet: ``` @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); System.out.println("进来了submit!!!!"); work worksubmit=new work(); HttpSession session = request.getSession(); worksubmit.sete_name("sjn"); //(String)session.getAttribute("username"); SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");// 定义格式 String choosedate=dd.format(request.getParameter("txttest")); System.out.println(choosedate); Date chooseDate = null; try { chooseDate = dd.parse(choosedate); } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } java.sql.Date sqlchooseDate = new java.sql.Date(chooseDate.getTime()); worksubmit.setw_date(sqlchooseDate);//change 日期格式 String testname=(String)request.getParameter("testname"); worksubmit.setw_title(testname); ///time 获得方式待写 int score =0; String content=(String)request.getParameter("feel");//心得内容 if(content != null) { score+=2; } worksubmit.setw_content(content); int achieve11=0; int achieve21=0; int achieve31=0; int achieve41=0; String achieve1=(String)request.getParameter("Fruit1"); String achieve2=(String)request.getParameter("Fruit2"); String achieve3=(String)request.getParameter("Fruit3"); String achieve4=(String)request.getParameter("Fruit4"); if (achieve1!= null) { score=score+2; achieve11=1; } if (achieve2!= null) { score=score+2; achieve21=1; } if (achieve3!= null) { score=score+2; achieve31=1; } if (achieve4!= null) { score=score+2; achieve41=1; } worksubmit.setachieve1(achieve11); worksubmit.setachieve2(achieve21); worksubmit.setachieve3(achieve31); worksubmit.setachieve4(achieve41); worksubmit.setw_score(score); DAOProxy DAOProxy=new DAOProxy(); try { if(DAOProxy.submit(worksubmit)){ request.getRequestDispatcher("worklist.jsp").forward(request,response);; return ; }else { return ; } } catch (Exception e) { e.printStackTrace(); } } ``` 前台jsp页面: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> <title>日期选择</title> <!-- 引入JQ Mobile所需C2S --> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <!-- 引入JQ 脚本文件提高对 JQmobile支持 --> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <!-- 引入JQ Mobile所需脚本文件 --> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <!-- 引入mobiscroll插件 --> <script src="js/zepto.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.zepto.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.core.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.scroller.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.datetime.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.select.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.scroller.ios.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.scroller.android.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.scroller.android-ics.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.scroller.wp.js" type="text/javascript"></script> <script src="plugs/mobiscroll/js/mobiscroll.i18n.zh.js" type="text/javascript"></script> <link href="plugs/mobiscroll/css/mobiscroll.scroller.css" rel="stylesheet" type="text/css" /> <link href="plugs/mobiscroll/css/mobiscroll.scroller.sense-ui.css" rel="stylesheet" type="text/css" /> <!-- 配置mobiscroll插件 --> <script type="text/javascript"> $(function () { var curr = new Date().getFullYear(); var fun = function () { $('#txttest').scroller('destroy').scroller({ preset: 'date', minDate: new Date(2012, 3, 10), maxDate: new Date(2020, 12, 15), invalid: { daysOfWeek: [0, 6], daysOfMonth: ['5/1', '12/24', '12/25'] }, theme: $('#theme').val(), lang: 'zh' }); } $('.settings select').bind('change', function () { fun(); }); fun(); }); </script> </head> <body> <div data-role="page" data-theme="a"> <div data-role="header" data-position="fixed"> <h1>写作业</h1> <a href="http://localhost:8080/zhisland/plugs/mobiscroll/index.html" data-role="button" class="ui-btn-left">返回</a> </div> <form action="submitServlet" method="post"> <div id="choose" name="choose" data-role="content"> <label for="test" >选择日期:</label> </div> <div id="inputchoose"> <input name="txttest" id="txttest" placeholder="请选择日期" > </div> <style type="text/css"> #choose{ width:100px; float:left;} #inputchoose{ width:200px;float:left;} </style> <HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1> <div id="learn" data-role="content"> <label for="test" >学习文章:</label> </div> <div id="inputlearn"> <input name="testname" id="testname" placeholder="请填写学习文章题目" > </div> <style type="text/css"> #learn{ width:100px; float:left;} #inputlearn{ width:400px;float:left;} </style> <HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1> <div data-role="content" > <label for="name">心得体会:</label> <textarea id="feel" name="feel" style=" "></textarea> <!-- 禁止textarea自动增长 --> <script>$(function () { $("#feel").textinput("option", "autogrow", false); })</script> </div> <style> textarea.ui-input-text{min-height:200px;}</style> <HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1> <div data-role="content" > <label >自我评价:</label> <label for="1">1.听导读分享<input name="Fruit1" type="checkbox" value="1" /></label> <label for="2">2.不抱怨 不说累 尽己责<input name="Fruit2" type="checkbox" value="2" /></label> <label for="3">3.看家书点评<input name="Fruit3" type="checkbox" value="3" /></label> <label for="4">4.诵读课文<input name="Fruit4" type="checkbox" value="4" /></label> </div> <input type="submit" value="确定"> </form> <div data-role="footer" data-position="fixed"> <div data-role="navbar" data-position="fixed"> <ul> <li> <a href="http://localhost:8080/zhisland/plugs/mobiscroll/index.html"> <h3> 创建作业 </h3> </a> </li> </ul> </div> </body> </html> ``` 麻烦高手解决一下 第一次做,还不太懂。十分感谢!!
java前后台数据请求返回问题
![图片说明](https://img-ask.csdn.net/upload/201804/06/1522981331_665869.png)![![图片说明](https://img-ask.csdn.net/upload/201804/06/1522981219_852743.png)图片说明](https://img-ask.csdn.net/upload/201804/06/1522981210_225916.png)将后台list数据转化成jsonarray返回前台,前台访问list中元素的属性显示在下拉框中,执行只输出System.out.println("getDataset.java中2");哪里有问题? 后台.java代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String test_name = request.getParameter("testname"); System.out.println("test_name: "+test_name); DBController con = new DBController(test_name); //查找list System.out.println("进入前"); List<DocumentBean> list = con.select(test_name); System.out.println("getDataset.java中"); System.out.println("list:"+list.get(0).getDatasetPath()); System.out.println("getDataset.java中2"); JSONArray list1=JSONArray.fromObject(list); System.out.println("getDataset.java中3"); response.setCharacterEncoding("UTF-8");//解决显示中文乱码问题 PrintWriter writer = response.getWriter(); writer.write(list1.toString()); writer.flush(); System.out.println("list:"+list.get(0).getId()); } 前台.jsp代码 <div class="form-group" id="select_now"> <label class="col-xs-3 control-label">选择已有数据集</label> <div class="col-xs-3"> <select class="form-control" name="select_dataset" id="select_dataset" onclick="getdatasets();"> </select> </div> </div> function getdatasets(){ $.ajax({ type : "POST", url:"<%=contextPath%>/getDatasets", data : { type : "0", testname : "自动分类", }, dataType : "text", async : false, context : null, success : function(list) { alert(typeof list); alert("成功1"); //下拉菜单选项显示数据库名,值为数据库的真实地址 $("#select_dataset").html(''); //alert("成功2"); for(var i = 0; i<list.length; i++){ var inner = ""; //alert("成功3"); inner += "<option value='" + list.get(i).getDatasetPath() +"'>" + list.get(i).getDataset() + "</option>"; $("#select_dataset").append(inner); } list=[]; alert("成功5"); } }) }
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的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是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
实战:如何通过python requests库写一个抓取小网站图片的小爬虫
有点爱好的你,偶尔应该会看点图片文字,最近小网站经常崩溃消失,不如想一个办法本地化吧,把小照片珍藏起来! 首先,准备一个珍藏的小网站,然后就可以开始啦! 第一步 我们先写一个获取网站的url的链接,因为url常常是由page或者,其他元素构成,我们就把他分离出来,我找到的网站主页下有图片区 图片区内有标题页,一个标题里有10张照片大概 所以步骤是: 第一步:进入图片区的标题页 def getH...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问