ARTS第一周

开始进行的第一周。

以下是各项的情况:

Algorithm

这周有点赶项目,偷懒做了一个最基本的题目。

链接:[LeetCode-01]-Two Sum

  Java:

public int[] twoSum(int[] nums, int target) {
    Map<Integer,Integer> map = new HashMap<>();
    for(int i=0 ; i < nums.length ; i++){
        map.put(nums[i],i);
    }
    for (int i = 0;i < nums.length; i++){
        int complement = target - nums[i];
    if (map.containsKey(complement)) {
        return new int [] { i , map.get(complement)};
        }
    }
    throw new IllegalArgumentException("No two sum solution");
}                

  JS:

const twoSum = function(nums, target) {
    const comp = {};
    for(let i=0; i<nums.length; i++){
        if(comp[nums[i] ]>=0){
            return [ comp[nums[i] ] , i]
        }
        comp[target-nums[i]] = i
    }
};

Review

分享   写伪代码来帮助理清思路  https://www.geeksforgeeks.org/how-to-write-a-pseudo-code/

  如何写一个伪代码?

  伪代码是经常用于编程和基于算法的字段的术语。它是一种允许程序员表示算法实现的方法。简单地说,我们可以说它是算法的显性表示。通常,算法在伪代码的帮助下表示,因为无论什么编程背景或知识等级,程序员都可以解释它们。顾名思义,伪代码是一种假代码或代码的表示,即使是具有一些学校级编程知识的外行也可以理解。

        算法它是有组织的逻辑序列或针对特定问题的方法。程序员实现一种算法来解决问题。算法使用自然语言但有些是用注释来表达。

  伪代码:它只是以简单英语编写的注释和信息文本形式的算法实现。它没有任何编程语言的语法,因此无法由计算机编译或解释。

  伪代码的优点

  • 提高任何方法的可读性。这是开始实现算法的最佳方法之一。
  • 充当程序与算法或流程图之间的桥梁。也可以作为一个粗略的文档,因此当写出伪代码时,可以很容易地理解一个开发人员的程序。在行业中,文档的方法是必不可少的。这就是伪代码证明至关重要的地方。
  • 伪代码的主要目标是解释程序的每一行应该做什么,从而使程序员更容易构建代码的构建阶段。

  如何写一个伪代码?

  1. 安排任务序列并相应地编写伪代码。

  2. 从伪代码的声明开始,该伪代码确定主要目标或目标。

  Example:

  This program will allow the user to check
  the number whether it‘s even or odd. 

  3. if-else,for,while循环在程序中缩进的方式,同样地缩进语句,因为它有助于理解决策控制和执行机制。它们还在很大程度上提高了可读性。

Example:

if "1"
    print response
        "I am case 1"

if "2"
    print response
        "I am case 2"

  4. 使用适当的命名约定。人类倾向遵循我们所看到的方法。如果程序员通过伪代码来表达,他的方法将与它相同,因此命名必须简单明了。

  5. 使用适当的命名方式,例如驼峰式用于方法,大写用于常量,小写用于变量。

  6. 详细说明实际代码中将要发生的一切。不要将伪代码抽象化。

  7. 使用标准编程结构,例如‘if-then‘,‘for‘,‘while‘,‘cases‘,就像我们在编程中使用它一样。

  8. 检查伪代码的所有部分是否完整,有限且清晰,以便理解和理解。

  9. 不要以完整的编程方式编写伪代码。即使对于外行或客户而言,也必须易于理解,因此不包含太多技术术语。

  例:

    我们来看看这段代码吧

// This program calculates the Lowest Common multiple
// for excessively long input values 

import java.util.*; 

public class LowestCommonMultiple { 

    private static long
    lcmNaive(long numberOne, long numberTwo)
    { 

        long lowestCommonMultiple; 

        lowestCommonMultiple
            = (numberOne * numberTwo)
              / greatestCommonDivisor(numberOne,
                                      numberTwo); 

        return lowestCommonMultiple;
    } 

    private static long
    greatestCommonDivisor(long numberOne, long numberTwo)
    { 

        if (numberTwo == 0)
            return numberOne; 

        return greatestCommonDivisor(numberTwo,
                                     numberOne % numberTwo);
    }
    public static void main(String args[])
    { 

        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter the inputs");
        long numberOne = scanner.nextInt();
        long numberTwo = scanner.nextInt(); 

        System.out.println(lcmNaive(numberOne, numberTwo));
    }
} 

    用伪代码表示:

This program calculates the Lowest Common multiple
for excessively long input values 

function lcmNaive(Argument one, Argument two){ 

    Calculate the lowest common variable of Argument
    1 and Argument 2 by dividing their product by their
    Greatest common divisor product 

    return lowest common multiple
end
}
function greatestCommonDivisor(Argument one, Argument two){
    if Argument two is equal to zero
        then return Argument one 

    return the greatest common divisor 

end
} 

{
In the main function 

   print prompt "Input two numbers" 

   Take the first number from the user
   Take the second number from the user 

   Send the first number and second number
   to the lcmNaive function and print
   the result to the user
} 

Tip

  曾遇到一个问题: 

   简单的说: 就是 客户要求的数据库字段 其他都是首字母小写的驼峰式命名 , 但是OrderId不是,当时还问过甲方 DBA ,反正回答就是 给我的就是这么写的 不能改 。 具体传值时候发现其他都正常 而这个字段传值 null , 如果改成 orderId 就能传的到  ? 怎么解决 ? 为什么 ?

   具体的:

JSON数据:
{
    "OrderId":"T3565331",
    "userId":"W1078"
}
Controller方法:
@PostMapping
public String hehe(@RequestBody Order order){
    return null;
}
实体类:
public class Order {
    private String OrderId;
    private String userId;

    public String getOrderId() {
        return OrderId;
    }

    public void setOrderId(String orderId) {
        OrderId = orderId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.user = userId;
    }
}

  写了个测试随便测测 : (因为当时懒 userId 写的 user , 当时截图下来就是user , 当userId就是 )

  解答:

  如何解决 ?因为已经清楚  orderId 可以传值了 , 使用 @JsonProperty  重新定义 json 别名 把 OrderId 程序里改成  别名 orderid 就解决了 。

  

  但来思考个问题 实际是通过 json 找实体类的属性 还是 通过实体类找到 json 的属性?

   查看 springBoot 序列化 json 的源码,是使用的 jackson 处理的 。返回用 @Responsebody 自动处理 json , 而 Jackson 在解析返回的 json 字符串时 首字母 默认是小写的  。所以是通过实体类找到的,具体是: 提取 set 方法 , 去掉 set 然后后面的首字母变成小写 , 再去 json 去找 。 所以会出上面的问题 。再具体的解析 可以去看看 肥朝的  spring 讲解 ,当时忘了记下地址了 。。。(失策,现在不知道地址了没法贴了)或者自己打开 IDEA 看看 序列化 json 这一块的源码

  

  因为 上面的问题 , 所以 我推荐下看json序列化的源码

https://github.com/dunwu/spring-boot-tutorial/tree/master/codes/web/sbe-web-json

 

Share

  感觉现在最缺乏的就是时间管理 和 精力的管理 , 所以这周推荐

  耗子哥的 时间管理:如何利用好自己的时间

原文地址:https://www.cnblogs.com/jxl00125/p/11020441.html

时间: 2024-08-29 23:05:45

ARTS第一周的相关文章

ARTS 第一周打卡

class Solution { public: int singleNumber(vector& nums) { # if 0 //方法一:这里算不算用额外的空间 std::sort(nums.begin(), nums.end()); for(int i = 0; i = nums.size() || nums[i] != nums[i + 1]) { return nums[i]; } } return 0; #else // 2.利用 ^= 算法(相同为假,不同为真) int iRes

20155336 2016-2017-2《JAVA程序设计》第一周学习总结

# 20155336  2016-2017-2<JAVA程序设计>第1周学习总结 ## 教材学习内容总结 开学的第一周,带着些许的欣喜和好奇,听完了老师的第一堂课.说心里话学习JAVA仿佛观看一部英文影视作品一样头疼, 因为总会有许许多多相似的名字让你记得晕头转向.JAVA也是一样,什么JVM啊JRE啊JDK啊 (/(ㄒoㄒ)/~~)  等等一系列 的英文缩写,让人心神意乱~~但总体上对JAVA有了一个初步的了解.通过课上老师的介绍以及课下对JAVA书第一章的浏览, 我简单的了解了JAVA艰辛

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

第一周例行报告

PSP 内容 类别 预计时长 开始时间 结束时间 中断时间 实际花费时间 第一周作业一 写作 1h 2017-9-7  19:25 2017-9-7  20:18  回复微信消息5min 48min 看<构建之法> 阅读 一周,每天1h30min 2017-9-7  21:35 2017-9-10   每天抽空看一些 没有具体时间 采访记录 写作 1h 2017-9-9   20:46 2017-9-9 22:04  一边写一边吃火龙果  1h左右 构建之法读后感 写作 1h 2017-9-1

《嵌入式设计》第一周学习总结

<嵌入式设计>第一周学习总结 学习时遇到的主要问题 1.运行环境未及时安装 2.命令不熟练 3.上课状态不好 解决方法 1.及时安装环境并熟悉运行 2.参考Linux操作系统实用教程并百度一些问题的解决办法 3.及时调整自己状态 主要学习内容 Linux一些简单基本的操作, 用.c文件输出hello word 用vi test.c 创建.c文件 #include <stdio.h> int main(){ printf("hello word\n"); } 并用

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

2016-7第一周工作总结

姓名 王奈 时间 第一周工作总结 学习内容 经过了一周的开发与改进,我们的easy工大已经初见成果.这一周,我们完成了:界面的重新设计,数据获取正确性修改,以及吐槽墙功能的实现等等.我的工作就是文档记录,在这过程中,我能够记录我们项目进步的点点滴滴,记录它是如何一步一步走到现在的样子,就像看到了软件的成长过程一样. 除此之外,我还完成了一个嵌入式开发项目的初步实现,学习了嵌入式编程的原则以及优化方法.如同软工所要求的一样,我在嵌入式开发的过程中也使用了文档记录的方法来管理我们的项目进度,这样一来

JS第一周总结1

JS第一周总结 这周我学习了JS的基础部分,大致分为了: a.基础变量及数据类型 b.特殊数据类型 c.JS基础语句类型 d.BOM操作 e.DOM操作 ###基础变量###     1.首先给变量取名,取名规范有3点:         1.变量首字符必须是字母或者美元符号$.下划线_ 三者之一.         2.变量名字中不能包括特殊符号,比如空格.加减号等符号.         3.变量中不能包括JS中的关键字,比如var之类的. 2.取好名字之后,我们需要将这个变量定义出来,并且赋值给

20145321曾子誉《Java程序设计》第一周学习总结

20145321 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 1.三大平台:Java SE.Java EE .Java ME 2.Java SE:由JVM.JRE.JDK.Java语言四部分组成. JVM:操作系统,虚拟机. JRE:执行环境,包括JVM. JDK:包含JRE及开发过程中需要的一些工具程序. 3.JCP.JSR.RI.TCK的关系:任何想要提议加入Java的功能或特性,必须以JSR正式文件的方式提交,经过JCP这个国际组织投票通过,成为最终文件,由此做出的参考