狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线

CIT 594代做、代寫Python設(shè)計編程

時間:2024-04-17  來源:  作者: 我要糾錯



CIT 594 Solo Project
An Exercise in Software Design
Planning and design are key to successfully building complex software; these are the focus of this
assignment. You will apply the design principles and design patterns that we recently covered in
class to develop, from scratch, a Java application that reads text files as input and analyzes the
contents.
This assignment is a significant level-up from previous assignments. You will not just be plugging
code into an application structure that has been supplied to you. Instead, you will have to use
the skills you have been learning all semester to design both the full structure of the application
and the individual functions to perform its specific tasks. This is a much more time-consuming
project than those you have encountered previously, so please get started early and plan your time
accordingly.
Because of the centrality of design in this assignment, design will also be a large part of your grade.
A perfectly organized submission that fails to compile will receive more points than a submission
that works perfectly but violates all of the specified design objectives.
The good news is that much of the design work you do in this project will be directly reusable
in the next assignment, your final group project. You must complete the current assignment by
yourself, but doing your best work now will give you a head start when you begin to work with
your assigned team.
1
Contents
1 Learning Objectives 3
2 Background 3
3 Input Data Format 3
3.1 Tweets: Tab-Separated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Tweets: JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3 States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Functional Specifications 6
4.1 Runtime arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Identifying relevant tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.3 Determining the locations of tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4 Program output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.5 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.6 Functionality Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Design Specification 11
5.1 The Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Logistics 13
6.1 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2
6.2 Getting Help on the Discussion Board . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.3 How to Submit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.4 Assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.5 Common Mistakes & Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . 15
Learning Objectives
In completing this assignment, you will learn how to:
• Design a software system using an N-tier architecture
• Design software using the principles of modularity, functional independence, and abstraction
• Apply the Singleton design pattern
• Use a Java library to read data stored in a JSON file
Background
Government agencies such as the Centers for Disease Control can use social media information
to get an understanding of the spread of infectious disease. By analyzing the use of words and
expressions that appear over time on platforms such as Twitter, Facebook, etc., it is possible to
estimate where the disease is affecting people and whether it is spreading or appears to be contained.
In this assignment, you will design and develop an application that analyzes a small set of Twitter
data to look for tweets regarding occurrences of the flu and determines the US states in which these
tweets occur.
Information about the format of the input data, the functional specification of the application, and
the way in which it should be designed follows below. Please be sure to read all the way through
before you start programming!
Input Data Format
Your analytical dataset is a collection of potentially flu-related tweets, with some metadata for
each. At a minimum, each tweet record will contain the tweet text, the tweet date, and the tweet
location in latitude/longitude format. Additional metadata may also be present, but is not needed
3
for your analysis.
Some tweet records may appear in the dataset multiple times with identical data. You should
analyze, count, and log each appearance independently, and not worry about trying to detect
duplicate tweets.
Tweet records will be provided in two different formats: a tab-separated text file and a JSON file.
Your program will need to automatically select the appropriate parser for a given file based on its
type. You may infer the format of a file from its file name extension (the portion of the file name
following the last “.”). Note that the provided “flu tweets.txt” and “flu tweets.json” files
both contain the same set of tweets, just in different formats and with slightly different extraneous
metadata.
Tweets: Tab-Separated
The tab-separated values file for this assignment has “.txt” as its file extension. Each line of the
file contains the data for a single tweet. The following is an example of the data for a single tweet:
[41.38, -81.49] 6 2019-01-28 19:02:28 Yay, homework!
The line contains four tab-separated (“t”) fields:
1. Location: the geographical coordinates [latitude, longitude] of the point of origin of the tweet.
This field is demarcated by square brackets (“[]”) and the latitude and longitude are separated
by a comma and a space (“, ”): “[41.38, -81.49]”
2. An identifier used by the collector of the tweets. (“6” in this example.) This field can be
ignored for our purposes.
3. The date of the tweet in YYYY-MM-DD hh:mm:ss format. (“2019-01-28 19:02:28” in this
example.) We will also ignore this field.
4. The text of the tweet: “Yay, homework!”
Tweets: JSON
JSON (“JavaScript Object Notation”) is a popular standard for exchanging data on the World
Wide Web. For details see: ECMA-404 and rfc8259. In this assignment and elsewhere, JSON files
use the “.json” extension. In brief, JSON files are human-readable text files which encode data in
JavaScript syntax (which is also similar to Python syntax). Permissible atomic values are strings,
numbers, or one of true, false, or null. All other data is encoded in one of two composite types:
“object” and “array”.
4
JSON objects are effectively maps written in the same syntax as Python dicts: curly braces (“{}”)
surrounding comma separated key:value pairs. Arrays are represented as square brackets (“[]”)
enclosing a series of comma separated values, like Python lists. In general, JSON allows for arbitrary
nesting of composite types.
The JSON tweets file contains an array of tweet objects. In JSON, the example tweet above might
look something like:
{
"location": [41.38, -81.49],
"identifier": 6,
"time": "2019-01-28 19:02:28",
"text": "Yay, homework!"
}
Note that if you open the provided JSON tweet archive in a text editor (which you should do to
familiarize yourself with its structure), you may see that the JSON tweet objects contain additional
fields beyond the ones that we are using, that certain unused fields are missing, or that the fields
are in a different order from the example given above. This should not affect your work on this
assignment, as you are not expected to attempt to manually parse the JSON from the file text.
Instead, you will read in the files using a standard JSON processing library, and work with the
resulting data structures.
There are numerous Java libraries for reading JSON objects, and numerous tutorials on how to
use them. For this assignment, we’re going to be using the JSON.simple library. Use the provided
json-simple-1.1.1.jar from the starter files; add it to your project’s build path. A tutorial for
this library is available here. Do not put the jar file in your src or bin directories, and do not
unpack it. Jars are meant to be used directly.
To repeat: Do not attempt to write your own code to parse the JSON file! It would be extremely
time-consuming to get all the details right, and would take you far afield from the focus of this
assignment. Only process the JSON file using the provided JSON.simple library.
States
In order to determine the state from which each tweet originated, your program will also need to
read a file that contains the latitude and longitude of the center of each of the 50 US states, plus
Washington DC, in comma-separated format. Each line of the file contains the data for a single
state and contains the name of the state, the latitude, and the longitude. Here is an example:
Alabama,32.7396323,-86.8434593
5
Provided Files
Your program will be evaluated using the following input files:
• a set of 10,000 tweets in tab-separated format (flu tweets.txt)
• the same 10,000 tweets in JSON format (flu tweets.json)
• a CSV file listing the centers of the 50 U.S. states and Washington, D.C. (states.csv)
Download the three input files along with json-simple-1.1.1.jar and add them to your project’s
root directory so that you can test your program. Identical copies of those files will be used as part
of the functional evaluation of your submission. You should, of course, create your own input files
for testing.
Functional Specifications
This section describes the specification that your program must follow. Some parts may be underspecified; you are free to interpret those parts any way you like, within reason, but you should ask
a member of the instruction staff if you feel that something needs to be clarified. Your program
must be written in Java. As with previous assignments, you should use Java 11 for this project
since this is the level used by Codio. Your code must not make use of external libraries that are not
part of the standard Java 11 API other than the provided JSON.simple library. Do not configure
a module for your project (even if your IDE recommends doing so). It’s possible your IDE might
generate a module-info.java file even without prompting you; we recommend deleting this.
Runtime arguments
The runtime arguments to the program should specify, in this order:
• the name of the tweets input file
• the name of the states input file
• the name of the log file (for logging debug information; see “Logging” below)
For example: flu tweets.json states.csv log.txt
Do not prompt the user for this information! These should be specified when the program is started
(e.g. from the command line or using a Run Configuration in your IDE). If you do not know how
to do this, please see the documentation here.
6
The program should display an error message and immediately terminate upon any of the following
conditions:
• the number of arguments is incorrect
• the tweets file does not match (case-insensitive) a recognized extension (“.json” or “.txt”)
• the specified tweets file or states file does not exist or cannot be opened for reading (e.g.
because of file permissions); take a look at the documentation for the java.io.File class if you
don’t know how to determine this
• your program cannot create/open the specified log file for writing
For simplicity, you may assume that the tweets file and states file are well-formed according to the
specified formats, assuming they exist and can be opened. You can also assume that the format is
correctly labeled if the file name includes a valid extension.
These are pretty big assumptions but will greatly simplify this assignment!
Note: If the designated log file does not exist, it should be created, and if it does exist, it should
be opened in append mode instead of overwriting the existing file. (Consult the FileWriter docs
to get the parameters correct.)
Identifying relevant tweets
The goal of our tweet analysis is to track spread of the flu. To that end, you must identify the
tweets that discuss the disease. After identifying the flu tweets, your program should match the
locations of these tweets to states and print out the number of flu tweets in each state (but only
for those states that had any flu tweets at all).
A tweet is considered to be a flu tweet if the text contains one or more flu words or hashtags. For
this assignment, we’ll simplify the notion of a hashtag to the same thing as a word with a “#” in
front (i.e. “#flu” is hashtag and “flu” is not). A valid flu word or hashtag satisfies the following
criteria:
• The word must start with “flu” (or “#flu” for a hashtag). None of “influence”, “influenza”,
and “!flu” are flu words, for our purposes.
• If there are any characters following “flu”, the next character must not be a letter, but
any other following string does not invalidate the word. “fluent” is not a valid flu word,
but“flu2020” is, as is “flu4me&u”.
• Matching should be case-insensitive, as in our sensitivity analysis earlier in the semester.
“flu”, “FLU”, “Flu”, and “fLu” are all valid flu words.
• A flu hashtag is a flu word with a single ‘#’ in front of it.
7
Hint: Skim the regular expression documentation in java.util.regex.Pattern. There are methods in Pattern and Matcher that can make this quite easy if used correctly.
Some example tweet classifications, note this does not cover all cases to consider:
Text Flu tweet?
I feel like I have the flu and I hate it Yes
Flu symptoms are the worst Yes
I definitely have the flu Yes
I think I have the #flu I’m so sick Yes
How would I know if I have the flu? Yes
Five days I’ve had the flu! so sad Yes
That bunny is so fluffy I wanna squeeze it No
Don’t be influenced by fake news No
ugh, I got #fluvid-19, shoulda taken the vax. No
so sick with the #flue gonna go home now No
Although a real-world implementation would arguably want to identify the last example as a flu
tweet, you should not do so for the purposes of this assignment.
Please do not spend too much time worrying about what is and what is not a “flu tweet”, as that
is not the main purpose of the assignment. We’re not trying to trick you, we promise! As long as
your code works correctly for the examples provided above, and is case-insensitive, you’ll be fine.
As you’ve surely noticed, this approach to identifying “flu tweets” is extremely simplified and
probably not super-accurate, but determining whether a tweet really does indicate that someone
has the flu is waaaay outside the scope of this assignment. So even if you believe you have a
more accurate solution to the problem, for your submission, please be sure to follow the
specifications described here!
Determining the locations of tweets
Once you have found the “flu tweets,” you will need to determine the state in which each originated.
For the purpose of this assignment we will use a simplified approach to matching locations. The
state of origin is defined as the state whose provided reference point (from “states.csv”) is the
lowest cartesian (planar) distance from the tagged location of the tweet. In the event of an exact
tie, pick one arbitrarily. All alternatives in such a scenario will be considered equally valid.
Clearly this is not a perfect measure of distance — the Earth is a spheroid rather than a plane
8
(hopefully we can all agree on that), states are weird shapes rather than single points, and we might
be interested in other completely different definitions of distance (e.g. travel time), or distances
to other things like cities, or general clustering. If you find yourself inspired to look into these or
other more accurate and meaningful metrics, that’s great! But your program will be graded on
how well it matches the expected results, which are calculated using “flat-earth” cartesian
distances in the form:
distance = q
(longitude2 − longitude1)
2 + (latitude2 − latitude1)
2
Program output
When your program finishes looking for “flu tweets” and determining their locations, it should
print the number of “flu tweets” per state to the console, using System.out, with the state names
listed in alphabetical order. (Hint: think about which data structure you can use to make this a
bit easier!)
When writing this summary output to the screen, please format it as one line per state. Each line
should consist only of the state name followed by a colon (“:”) and one space, then the number of
“flu tweets” from that state.
Alabama: 1
McMurdo Station: 4
Mons Olympus: 1
Pennsylvania: 1000
Tranquility Base: 2
If a state has no flu tweets, it should be omitted from the output list.
Please do not post questions in the discussion forum asking whether your state tally or tallies are
correct! It is up to each student to determine the correct output of the program.
Logging
In addition to displaying the output as described above, your program must also record all of the
“flu tweets” it identifies in the log file that was specified as an argument to the program.
For each “flu tweet”, write one line to the log file. The line must start with the state name followed
by 1 tab (“t”) followed by the text of the tweet. A good practice is to send each “flu tweet” to
the logger as a separate logging request. This request should be sent as soon as you know both
that it is a flu tweet and what state it is from.
9
For example:
Alabama I have the flu!
Note: only the requested information should be sent to the logger. Do not add more information.
Additional details:
• Only flu tweets should be logged.
• Flu tweets should be logged in the order they were read (i.e., in the order they appear in the
file).
• Each flu tweet should be logged exactly once.
• Duplicate entries in the input should be treated as distinct tweets. If a particular tweet
appears twice in the input, it should appear twice in the output.
• Your logs should contain no extra output or extraneous characters.
• If a log file with the same name already exists when the program starts, new log entries should
be appended to the end of the existing file, rather than overwriting it.
Functionality Checklist
Things to double check:
• Command line arguments: tweets file, states file, log file
• Support json and tab-separated tweets files
• Correct filtering for flu tweets
• Correct location matching between tweets and states
• Log handles both new and existing files
• Log flu tweets in the order they are read
• No extra duplication or omission of tweets (in the logs and the tallies)
• Prints state tallies in alphabetical order
• Only print states with tweets
• Formatting is correct (improperly formatted output will not count, even for partial credit)
• No extraneous output to System.out or to the log files
• No translation or alteration of the input text (i.e. do not trim, do not apply character set
translations)
• Do not use System.exit
10
Design Specification
In addition to satisfying the functional specification described above, your program must also use
some of the architecture and design patterns discussed in the videos.
In particular, you must use the N-tier architecture to identify and then separate your application
into functionally independent modules.
To help with the organization of your code (and to help with the grading), please adhere to the
following conventions:
• the program’s “main” function must be in a class called Main, which should be in the
edu.upenn.cit594 package
• the classes in the Presentation/User Interface tier should be in the edu.upenn.cit594.ui package
• the classes in the Processor tier should be in the edu.upenn.cit594.processor package
• the classes in the Data Management (file/backend data input/output, except for logging) tier
should be in the edu.upenn.cit594.datamanagement package
• the Singleton Logger class should be in the edu.upenn.cit594.logging package
• the classes you create to share data between tiers should be in the edu.upenn.cit594.util
package
Your Main class should be responsible for reading the runtime arguments (described above), creating
all the objects, arranging the dependencies between modules, etc. Beyond these tasks, make sure
Main doesn’t perform any duties that belong in other tiers. See the “Monolith vs. Modularity”
reading assignment in Module 10 for an example if you are unsure how to do this.
Because your program must be able to read the set of tweets from either a tab-separated file or
from a JSON file, you must design your application so that you have two classes to read the tweets
input file: one that reads from a tab-separated file and one that reads from a JSON file. The code
that uses those classes should not care which one it’s using. The classes that read the input files
should get the name of the input file via their constructor, passed from Main to whichever object
creates them.
The Logger
A logger is a global ledger available for use by all parts of an application, for sequentially recording
selected program events (typically debugging and monitoring information) separately from the
11
primary program output. The logger is a self-contained companion facility to the rest of the
application and is not governed by the main application design. It simply sits off to the side and
records events at the request of any other application component.
In general, there is one and only one logger instance, which is used by every part of the code at all
times. The logger should be initialized only once, before or at the first possible loggable event, and
any subsequent request for a logger, by any function, should return this same instance. In short,
a logger is a perfect example of the Singleton design pattern, and your logger for this assignment
must implement that pattern.
The logger class must have instance methods (non-static methods) to:
• Log an event. This method must have a single parameter of type String.
• Set or change the output destination. This method must take a single String, the name of
the file to write.
You may choose how to handle events sent to the logger prior to setting an output file (this should
not come up during normal operations). For the purpose of this assignment, you are free to just
drop these events and not record them anywhere.
The method that configures the output must support changing the output to a different file. That
means it must be careful to close the current output, if one is set, before opening the requested
destination. Logged events should appear in and only in the output file that is current when they
are logged.
Log files should be created if necessary and always opened with the append option, not overwritten.
See the FileWriter documentation for details.
Hint: The specified behaviors suggest settings to use when opening the output file and should not
require additional logic in your code.
Be mindful, if you want to use the Singleton pattern in other places in the code (this is neither
recommended nor forbidden), it is not just about classes that you only instantiate once. A Singleton
is global state that persists across much of the life of the application, so you wouldn’t want too
many of these floating around, unable to be garbage-collected.
12
Logistics
Please be sure to read the section below, as some of the details for this project are different from
that of other assignments.
Testing
As with previous assignments, writing your own tests is important to ensuring your implementation
is ready for successful deployment (grading). Given the design calls for a number of components
that must work together, it is recommended that you write tests that will carefully test each
individual component as well as some integration tests that check that the components will work
well with each other. Note: the tests that you write are for your benefit, they will not be graded.
The starter files include one Java file with unit tests to check the basic functionality of your
application. Those tests will check that the application can be run and generates properly formatted
output. For the most part those tests will not check the correctness of the output or stress test
your application. Passing these tests does not ensure that your code will receive full points, or even
that you will get a good grade. These are just the most basic tests to ensure your code is gradable.
Please make sure your implementation passes all provided tests before submission.
Getting Help on the Discussion Board
As always, you are welcome to use the discussion board to ask clarification questions, get help with
error messages (particularly when using the JSON library), and ask for general advice.
However, please do not post public questions regarding the correct outputs for the program (e.g.,
state flu tweet tallies or log contents). For instance, please do not post public questions along the
lines of “My program says that Connecticut has 4 flu tweets; is that right?” It’s important that
all students determine for themselves whether their program is working correctly. Unlike previous
assignments, correct answers and test cases will not be provided in advance.
Likewise, please do not post public questions such as “Should I put the code that reads the JSON
file in the Processor tier or the Data Management tier?”. Answering that question by yourself is
pretty much the point of the design aspect of the assignment!
13
How to Submit
Before you submit, make sure that you’ve signed off on the academic integrity statement. The
template signoff template.txt is included in the starter resources and must be renamed with your
first and last name. For example, John Smith would turn in the file “John Smith.txt”.
Submit your code by uploading to Codio. Codio has BasicTests.java, the data files, and the jars
for JUnit and JSON-Simple already loaded, so you only need to upload your src folder and the
academic integrity statement. The academic integrity statement should be in the submit folder in
Codio, not in the src folder.
As with previous assignments, you should make sure your code runs there by clicking “Run BasicTests” (which runs BasicTests.java), “Run Your Program: json” (which runs using the json input
file), and “Run Your Program: text” (which runs using the input txt file) as many times as you
need, to check basic functionality and output formatting. When you are ready to submit, press
“Mark as Complete”. Unlike past assignments, grades will not be immediately provided, as this
assignment has manually-graded components in addition to the usual automatic grading.
When uploading, your src folder (which should contain your edu folder as its immediate child)
should be inside the submit folder. By far, the easiest way to do this is by directly dragging the
src folder from your computer’s file manager and dropping it directly on top of the submit folder
on the left-hand side file tree in Codio. Don’t upload anything else and don’t delete anything in
the submit folder.
Assessment
This assignment is graded out of a total of 100 points. It will be graded by members of the
instruction staff.
The design of your system is worth 50 points, based on the correct use of the N-tier architecture
and the packages as described above. Be sure to follow the given package naming convention, and
be sure that the correct functionality is placed into the correct tier/package.
The implementation of the Singleton pattern is worth 10 points.
The implementation of your system is worth 40 points, based on its ability to do the following:
• Read command line arguments
• Read the input files
14
• Identify flu tweets
• Determine the state in which a tweet originated
• Produce the output in the expected format
• Write to the log file
Note: your code is expected to pass the unit tests provided with the starter files, before submission
and evaluation. If your submission does not pass all of those tests, you should not expect any
functionality points. Please do not request re-evaluation for functionality related issues if your
code does not pass all of the provided unit tests.
Common Mistakes & Frequently Asked Questions
What follows is a list of common mistakes and frequently asked questions we’ve seen in this assignment (and to some extent the group project, which can be thought of as “part 2” of this assignment)
over some past semesters. This assignment can be overwhelming at first due to suddenly needing
to create an entire data processing pipeline all by yourself with no starter code. Hopefully these
lists will keep you from going down some of the fruitless rabbit holes we’ve seen.
Common mistakes in the Singleton Logger
• Failing to close the old log file when creating a new one. (This is in reference to the requirement
that your logger be able to change to a new file when the configuration method gets called
multiple times.)
• Failing to flush the logger output after writing when not using a writer that automatically flushes output. Some do autoflushing and some don’t; see for instance the constructor
PrintWriter(Writer out, boolean autoFlush) (Javadocs).
• Using BufferedWriter for your Logger. This class is only useful if you want to avoid flushing
to the file frequently and only gets in the way if you want println to flush. See above point.
• Allowing getInstance() to construct multiple different instances of loggers each time you
call it. This method might construct a new logger if you’re using lazy instantiation and this
is the first time it’s being called, however in the general case, it should just return the exact
same logger that you created previously.
• Passing a filename to getInstance(). This method is supposed to just get the instance, and
the configuration method is supposed to be separate.
• Passing a filename to the logger’s constructor. If you’re passing a filename to the constructor,
15
it’s likely that you aren’t implementing Singleton correctly, since the constructor is supposed
to be private and getInstance() isn’t supposed to take any parameters.
• Passing your Logger instance to tiers through their constructor parameters. Instead, they
should use getInstance() themselves; remember that a Singleton is supposed to be like a
global variable accessible by all and that persists across the life of the application.
• Passing another class to the Logger. Loggers shouldn’t know anything about the design of
your program.
• Logging everything at once. That’s missing the point of a logger. Loggers are supposed to
log things as they happen, so that if an application suddenly crashes/fails, you can track what
happened right up until the moment of the crash.
Common mistakes in the n-tier architecture
• Trying to make a generic method that can read either states or tweets. (For instance, returning
a List<Object> and then casting each Object to the desired type inside the caller.) These
are two different types, so unifying them under one type would throw away the benefits of
having a type system to communicate meaning across interface boundaries.
• Using a data structure for holding tweets that discards insertion order. Remember, order of
tweets in the input file does matter.
• Unnecessary passing of filenames to tiers. A tier should only receive a filename if that file is
directly relevant to its operations.
Common coding and miscellaneous mistakes
• Using exactly the same regex string in Java as you would test with on regex101, etc. In Java,
is an escape char used to represent characters that are hard to represent directly, such as
spaces ‘s’, newlines ‘n’, etc., so you need to make sure instances of become \ when it
gets added to your Java regex string. Your IDE might do this automatically when you copy
and paste into it.
• Accidentally editing the input files. We’ve seen cases where students have opened the files
in Excel and then saved the files when they exit. It seems that Excel wants to edit the
format of the file even if you don’t make any changes to it. This is bad, because then you’ll
be operating on a completely different file/format than what we’ll be grading you on. Two
16
possible ways to prevent this: track all changes in git so that you can revert any changes you
make accidentally, or else make copies of the input files if you want to open them in external
programs.
• Using Scanner to read files. See the FAQ entry on Scanner.
• Over-complicated try-catch-finally chains (even worse: nesting them inside each other). These
are harder to reason about than you might think due to, in some cases, out-of-order evaluation.
Consider using try-with-resources to simplify your code.
• Catching and re-throwing the same exception without doing anything else. This is just
pointless.
• Catching an exception that indicates a failure, having an empty catch handler, and then just
proceeding. This sometimes makes sense for certain kinds of programs, but if the failure you
encountered indicates that no further processing is possible, then you should stop, report the
error, and terminate.
• Processing filenames in a way that doesn’t work when file is nested inside a folder or contains
more than one dot. This can happen if you make incorrect assumptions about the filename,
which could be as complex as something like “a/b/c/my.log.file.txt”.
How do I handle exceptions thrown by my program?
See the Error Propagation Techniques reading in Week 11 to learn about best practices for handling
exceptions.
Can I use the static factory method from the reading?
This is neither recommended nor forbidden, but is a valid way to create objects as long as you still
follow the given project specifications.
What do you mean by “functional independence across tiers”?
The idea is that details only propagate as far as necessary. So once tweets from two different formats
are packed into a consistent form, nothing that consumes those tweets needs to know what type
of file they were read from, and therefore should not know and should not split those downstream
consumers into multiple classes.
17
Do I need folders for each package?
Yes, apart from being nested inside a src folder (be careful not to make a src package), your folder
structure should exactly mirror your directory structure. Please see the Oracle documentation on
managing source files.
IDEs might not display it that way at first. They might display packages that don’t have any files
inside of them in a more flat / non-hierarchical structure. Don’t worry about that.
You shouldn’t need to manually create the folders. Your IDE should create the folders for you in
the right place as long as you are specifying the packages correctly. So if you create package a.b.c,
it will create a folder structure a/b/c.
Are comments required?
We don’t grade on the quality (or existence) of comments, but they’re helpful both to us and to
you.
As a general principle of coding (that we are not grading), don’t write too many comments that
explain things that are obvious to anyone who knows Java, but do include comments for complex,
non-obvious code blocks. If you find that your code often requires explanatory comments, this
might be a sign that your code is too complex.
Does the arguments array parameter in main work the same as in C?
No. If you’ve taken 593 or are used to C or other languages where the program name/path is the
first argument, this is one way Java is explicitly different. So yes, Main is not in that array, and yes
it is reasonable for you to expect it there if you were using some other languages – just not Java.
See the Oracle documentation for how the arguments array works in Java.
It seems like this project doesn’t really have a user interface at all. So why do we
need a ui tier?
Indeed, the logic you place in the user interface tier is expected to be relatively trivial compared to
other tiers since the program is just calculating some data, displaying it, then quitting immediately.
18
However you must still create the tier for doing this; this project is preparation for the group
project, which does have an interactive UI, and we want everyone to be comfortable with the
overall architecture.
How do I set up my IDE to run with command line arguments?
Eclipse
IntelliJ
How do I run my program from the command line? I’m getting errors when I try to
run it.
This isn’t required so focus on getting it running from your IDE first. If you still want to
try, you must run the program from a directory such that edu/upenn/cit594/Main.class or
bin/edu/upenn/cit594/Main.class is a valid relative path for your compiled class. The directory for which edu/upenn/cit594/Main.class exists should be on the class path. By default the
current directory is on the class path which is why running from the correct location will generally
work, but you can also use an absolute path. The inputs would need to be in your current working
directory as well.
How do I import a jar file to my build path?
Eclipse
IntelliJ
The instructions seem contradictory: we’re not supposed to call class methods from
main, yet main is supposed to call a configuration method on the logger. What gives?
It’s not that you’re not allowed to call any methods in main; it’s that main is for setup or configuration only. In main do what you need to do to make your program run, but nothing else.
For Logger, that means calling its configure method. For your file readers, that means passing the
filenames they need to read from. To actually start running the program and displaying data to
19
the user, you have to start it somehow (maybe it starts on its own upon instantiating the final tier,
or maybe you need to call a start() method as in the Monolith vs. Modularity reading).
Will you “stress test” inputs to my functions with null values?
Since this program design is under your control, you get to decide which inputs are “defined” and
which are “undefined” for each method. We can’t stress test individual method you write since
we don’t know what you are going to call them or what your public API is going to be. The only
access point through which we can “stress test” your application is the main method inside your
Main package, and this does of course include supplying your program with missing/unreadable
files, etc., as specified in the assignment instructions.
Why does my log file look weird and unaligned?
Don’t worry about that – this is expected. Because of how tab stops work, your log file output isn’t
going to be “pretty” in terms of alignment. A single tab character displays as whatever amount of
whitespace is needed to get to the next tab stop. The default tab stop is often every 8th column.
So in this case, every state that is 8 or more characters would align the tweets starting at column
16, but shorter ones would only align the tweet to the 8th column. That said, different text editors
have different ways of displaying tabs.
Should I use Scanner to read input files?
Scanner is convenient and powerful. But it’s also easy to get yourself in trouble if you don’t
understand how it works and what its doing (as seen from experience with students over past
semesters).
Unless you really really understand what you’re doing, do not attach more than one Scanner (or
any buffered stream consumer) to an input stream. Consider what happens when you take 1 liter
of water from the tap at your house. When you shut it off, there may still water from the main
pipes sitting behind the valve. If you open another faucet, you will not get the same molecules of
water that you would get if you ask the first faucet for some more.
Aside from that, if you ask a Scanner for the wrong thing you may end up consuming more or less
of the input than you expected.
20
We advise you to avoid Scanner and use BufferedReader or some other input classes, or test really
carefully, and do not assume the input will come as cleanly as a human typing.

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

標簽:

掃一掃在手機打開當前頁
  • 上一篇:CS6238程序代寫、代做Python程序設(shè)計
  • 下一篇:COMP2003J代寫、代做Python/Java編程語言
  • 無相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區(qū)
    昆明西山國家級風景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗證碼平臺 幣安官網(wǎng)下載 歐冠直播 WPS下載

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
    ICP備06013414號-3 公安備 42010502001045

    主站蜘蛛池模板: 亚洲污片 | 91福利小视频 | 在线观看免费大片 | 一级女人毛片 | 国产网红主播三级精品视频 | 91视频黄色 | 99久在线精品99re8热 | 成人动漫一区二区三区 | 天天插天天干 | 中文永久在线 | 色就是色欧美色图 | 男男毛片 | 91成人影库| 亚洲精品国产精品乱码不99按摩 | 国模无码大尺度一区二区三区 | 国模在线 | 色婷婷a| 亚洲一区二区精华液 | 综合五月| 4438x五月天| 色接久久 | 草草影院av| 国产亚洲精品久久久久久 | eeuss鲁丝片一区二区三区 | 91毛片观看| 日韩欧美视频一区 | 在线免费观看日韩视频 | 久草国产精品 | www.色婷婷| 日本一级一片免费视频 | 成人h动漫精品一区二区器材 | 297wcc浏览器打开 | 国产精品乱码一区二区 | 午夜一区二区三区四区 | 特黄老太婆aa毛毛片 | 咪咪av| 亚洲精品午夜久久久 | 色网站在线播放 | 国产精品亚洲成在人线 | 顶级毛片 | 国产69精品久久久久久 | 亚洲第一黄色片 | 精品视频免费久久久看 | 狠狠操婷婷 | 99re8在线精品视频免费播放 | 在线免费观看黄视频 | 日日操夜夜操狠狠操 | 俄罗斯女人裸体性做爰 | 亚洲精品免费看 | 日韩免费在线观看 | 亚洲精品在线观看中文字幕 | 久久久国产高清 | 在线一二区 | 一级大片视频 | 91蝌蚪九色 | 国产一区成人 | wwwav在线播放 | 99国产精品欲 | 黄色激情在线 | 一区二区三区免费看 | 精品一区二区三区蜜桃 | 欧美精品一区二区三 | 激情文学中文字幕 | 成人做爰66片免费看网站 | 成人在线免费视频观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 久久精品欧美一区二区三区麻豆 | 午夜小视频网站 | 久久色婷婷 | 伊人久久精品 | 一级黄色在线视频 | 亚洲激情免费观看 | 日本免费a级片 | 成人免费视频一区二区三区 | 色狠狠一区二区三区香蕉 | 欧美夜夜 | 涩涩资源网 | 午夜性刺激免费视频 | 一区二区在线不卡 | 久久久久久麻豆 | 亚洲一区二区在线看 | 色一情一交一乱一区二区三区 | 免费激情片 | 三级自拍| 亚洲区av | 日日夜夜操操操 | 91亚洲综合 | 黑人性生活视频 | 婷婷午夜精品久久久久久性色av | 亚洲爱爱视频 | 国产自产自拍 | 亚洲乱亚洲乱妇 | 人人插人人爽 | 欧美性生活一区 | 三级成人在线 | 一区二区三区欧美在线 | 综合网天天色 | 狠狠干中文字幕 | 国产精品久久伊人 | 国产成人区 | 国产性久久 | av基地 | 深夜视频免费在线观看 | 成人一二三四区 | 国产成人精品网 | 97自拍偷拍| 欧美日韩精品一二三区 | 亚洲福利二区 | 亚洲天堂av在线播放 | xxx视频在线观看 | 成人精品毛片国产亚洲av十九禁 | 一本色道久久综合亚洲精品酒店 | 亚洲乱亚洲乱妇 | 日韩女同互慰一区二区 | 国产色多传媒网站 | 成人看片在线 | 国产欧美高清在线观看 | 久久久久久中文字幕 | 国产在线观看黄 | a天堂视频 | 狠狠艹狠狠干 | 亚洲精品老司机 | 国产精品永久免费 | av成人在线观看 | 青青草这里只有精品 | 亚洲射图 | 久久日本视频 | 日韩簧片 | 伊人久久一区 | 国产黄a三级 | 亚洲一区二区在线视频 | 欧美高清| 青青草手机在线观看 | 国产福利短视频 | 国产老妇av | 日韩av片在线播放 | 亚洲自拍偷拍av | 这里只有久久精品视频 | 中文字幕国产综合 | 天天综合网在线 | 国产精品国产成人国产三级 | 色婷婷av一区二区三区之e本道 | 奇米一区| 农村寡妇一区二区三区 | 国产成人片 | 精品少妇一区二区 | 91超碰在线免费观看 | 色在线视频观看 | 国模av在线| 欧美中文字幕视频 | 日日日操 | 在线欧美色 | 高清av资源 | 中文字幕韩日 | 国产视频一 | 天堂视频免费在线观看 | 91国偷自产一区二区三区观看 | 亚洲国产精品午夜在线观看 | 人人看人人看 | 亚洲精品中文字幕乱码三区 | 在线成人中文字幕 | 欧美成人精品在线观看 | 精品一区二区三区自拍图片区 | 亚洲女成人图区 | 日韩三级一区二区三区 | 91调教打屁股xxxx网站 | 国产交换配乱淫视频免费 | 欧美综合图区 | 韩国一级片在线观看 | 国产日韩欧美视频在线观看 | 国产在线播放网站 | 黄色三级免费观看 | 久久久国产一区 | 久久成人一区 | 在线看毛片网站 | 精品国产乱码一区二区三 | 日本视频网站在线观看 | 免费污视频 | 奇米网在线观看 | 国产成人免费在线视频 | 先锋资源久久 | 久久精品99国产精 | 激情九九| 黄色a一级视频 | 亚洲特级片 | 日本黄色片网址 | 国产精品福利一区二区三区 | 亚洲国产精品99久久久久久久久 | 久久精品免费av | 精品在线免费视频 | 亚洲伊人色 | 国模大胆一区二区三区 | 9i在线看片成人免费 | 操操操日日日 | 色悠悠网址| 日本黄色三级网站 | 久久久久性| 日日噜噜噜夜夜爽爽狠狠视频97 | 公车激情云雨小说 | 激情九九 | 日日夜夜狠狠操 | 色婷婷激情 | 香蕉久久夜色精品国产更新时间 | 少妇精品久久久久久久久久 | 亚洲图片在线播放 | 亚洲精品国产精品乱码不97 | www亚洲一区 | 超碰黑人| 亚洲成年人av | 亚洲天堂导航 | 五月天激情四射 | 免费看操片 | 岛国黄色片 | 国产在线美女 | 精品视频久久久久 | 色丁香在线 | 奇米影视第四色777 国产精品人人做人人爽人人添 | 久久久免费网站 | 国产在线你懂得 | 婷婷在线视频 | 中文字幕亚洲一区 | 91成人免费观看视频 | 亚洲黄色在线免费观看 | 91九色视频在线观看 | 三级黄在线观看 | 成人在线播放av | 免费国产高清 | 久久久久亚洲精品中文字幕 | 国产日韩欧美中文字幕 | 国产精品一区二区三区免费 | 伦伦影院午夜理伦片 | 激情福利| 极品探花在线 | 蜜桃精品噜噜噜成人av | 男人插女人视频网站 | 国产女人18毛片水18精品 | av毛片一区二区 | 麻豆一区二区三区精品视频 | 欧美色啪 | 亚洲一区二区三区在线视频 | 末发成年娇小性xxxxx | 伊人久久成人 | 中文字幕一区二区三区视频 | 2020国产精品自拍 | www.亚洲欧美 | 浪荡奴双性跪着伺候 | 激情文学亚洲 | 欧美亚洲一区 | 亚洲自拍偷拍网站 | 五月婷婷激情在线 | 成人精品免费 | 亚洲天堂五码 | 激情午夜影院 | 国产在线二区 | 天堂网视频 | 日韩av中文| 亚洲 自拍 另类 欧美 丝袜 | 爱搞逼综合网 | 婷婷六月丁 | 香蕉视频在线观看黄 | 色综合天天综合 | 欧洲激情网 | 开心激情五月婷婷 | 国产激情精品 | 日韩精品一二 | 在线观看中文字幕第一页 | 少妇一级淫片aaaaaaa | 黄色一集片| 国产精品一区二区性色av | 欧美亚洲国产视频 | 在线免费观看日韩av | 黄色香蕉网 | 欧美久久久久久 | 亚洲午夜精品久久久 | 亚洲六月丁香色婷婷综合久久 | 亚洲精品视频中文字幕 | 操小妹影视 | 黄色99 | 亚洲欧洲成人 | 日韩怡春院 | 久久久久久久国产精品视频 | 日韩美女一区二区三区 | 成人天堂av | 日本xxxx18 | 六月丁香激情综合 | 日韩精品一区二区三区四区 | 91福利小视频 | av在线大全 | 天天爽天天爽 | 亚洲乱码一区二区三区三上悠亚 | 精品少妇av | 麻豆一区二区三区四区 | 午夜神器在线观看 | 亚洲国产精品久久久久爰性色 | 精品伦一区二区三区免费视频 | 在线观看www | 自拍偷拍福利视频 | www色网 | 69视频免费看 | 在线看尤物 | 亚洲欧美综合在线观看 | 夜夜夜爽 | 亚洲精品无线乱码一区 | 久久在线视频精品 | 香蕉视频色| 夜色88v精品国产亚洲 | 午夜激情婷婷 | 最近好看的2019中文在线 | 性做久久久久久免费观看欧美 | 国语粗话呻吟对白对白 | 久草视频精品在线 | 网址你懂的在线 | 免费激情小视频 | 有码在线播放 | 国产精品久久影视 | 亚洲天堂精品久久 | 日韩视频专区 | 爱搞国产| 国产精品999久久久 国产999精品久久久久久 | 亚洲综合视频在线观看 | 中文字幕在线播放不卡 | 国产小视频免费在线观看 | 青青草成人在线 | 韩国三级少妇高潮在线观看 | 校园春色av| 91五月天 | 夜夜看 | 精品久久久久久久久久久久久久久久 | 日韩欧美网站 | 国产xxxx视频 | 香蕉依人| 久久国产精品久久 | 日日弄天天弄美女bbbb | 乌克兰做爰xxxⅹ性视频 | 日韩精品一区二区三区国语自制 | jav中文字幕| 亚洲国产精一区二区三区性色 | 黑人一区二区三区 | 神马午夜在线观看 | 中国毛片在线观看 | 久久国产精品系列 | 国产愉拍 | 国产成人a∨ | 色就是色欧美 | 免费一级片在线观看 | 中文字幕视频播放 | 日韩另类 | 香蕉依人| 外国黄色网址 | 99天堂网 | 亚洲精品一卡 | 在线中文字幕日韩 | 免费看一级 | 91精品小视频 | 日韩成人一级 | 天天综合一区 | 久热国产视频 | 免费在线一级片 | 日韩三级一区二区 | 欧美男人天堂网 | 久久精品蜜桃 | 91精品国产综合久久久密臀九色 | 99成人在线视频 | 亚洲美女操 | 色福利hd写真video | 五月激情六月婷婷 | av片不卡| 吻胸摸激情床激烈视频大胸 | 97福利影院 | 天天干天天色综合 | 中文字幕在线观看不卡视频 | 国产精选中文字幕 | 亚洲欧美日韩国产一区二区三区 | 亚洲国产综合在线 | 久久久久久久久久久免费av | 人人插人人射 | 色七七桃花综合影院 | 激情拍拍 | 天天天天 | 橘梨纱av一区二区三区在线观看 | 天天爱天天色 | 亚洲精品永久免费 | 九九热精品视频在线播放 | 久久99激情| 色婷婷国产 | 中文字幕一区二区在线播放 | 九九热在线免费视频 | 国产黄色片网站 | 新狠狠干 | 色婷婷av一区二区三区之e本道 | 91综合在线 | 欧美精品一二三区 | 日韩在线91 | 欧洲一级片| 调教亲女小嫩苞h文小说 | 奇米影视奇米色 | 亚洲免费网站在线观看 | 黑人精品欧美一区二区蜜桃 | 久久成人激情 | 亚洲成人网在线观看 | 这里有精品在线视频 | 91久久国产综合久久91 | 亚洲视频a| 中文字幕成人在线 | 日韩一级片网址 | 96精品视频 | av在线影视| 国产三级黄色 | 国产精品久久久久久在线 | 国产精品成人在线 | 嫦娥性艳史bd | 亚洲一区欧美日韩 | 色屁屁草草影院ccyycom | 婷婷亚洲激情 | 这里只有精品免费视频 | 在线视频在线 | 欧美性久久久 | 视频福利在线 | 丰满尤物白嫩啪啪少妇 | 免费欧美日韩 | 亚洲国产精品成人av | 天天综合久久综合 | 久久精品中文字幕 | 国产精品久久人 | 亚洲成免费 | 三上悠亚亚洲一区 | 国产在线xx | 韩国av永久免费 | 成人免费观看视频 | 久久香蕉网站 | 日日操天天| 一本色道久久综合亚洲精品小说 | 中文字幕免费在线看 | 久久精品性 | 国产一区日韩 | 欧美高清69hd| 在线观看亚洲精品视频 | 一区二区免费视频 | 爱情岛亚洲首页论坛小巨 | 尤物av在线 | 久久久久资源 | 妖精视频一区二区 | 黄色特级大片 | 一级片亚洲 | 色丁香六月 | 亚洲精品av在线 | 亚洲一区二区三区综合 | 久久久久久久久成人 | 欧美综合在线观看 | 成年人午夜视频 | 日本三级视频网站 | www噜噜偷拍在线视频 | 污污的视频网站在线观看 | 亚洲精品福利视频 | 亚洲国产www | 黄色aaa| 日韩欧美三级在线观看 | 久久视频精品在线 | 欧美专区第一页 | 日日干天天干 | 天天弄天天操 | 蜜臀视频在线观看 | 91网页入口 | 色欧美视频| 在线91av | 原创真实夫妻啪啪av | 成人免费视频国产 | 99久久久久久久久 | 久久久久久99精品久久久 | 伊人精品在线 | 曰本三级日本三级日本三级 | 中文字幕三区 | 成人一二三四区 | 免费在线看黄色 | 偷偷操av | 国产日韩欧美高清 | 一区二区日韩 | 奇米四色7777 | 中文字幕国产一区二区 | 黑人与日本少妇高潮 | 综合网激情 | www.haoav | 最近中文字幕在线免费观看 | 中文字幕在线观看三区 | 欧美成人dvd在线视频 | 伊人论坛| 嫩草影院在线观看视频 | 成人免费视 | 操操干 | 久久综合激情 | 免费在线国产 | 懂色av一区二区夜夜嗨 | 中文字幕一区2区3区 | 成人一级黄色 | 黄网在线播放 | 日韩精品一区二区三区视频 | 国产98在线 | 欧美xxxx网站| 亚洲欧美日韩中文字幕在线观看 | 男人午夜网站 | 亚洲情人网 | 在线黄色免费网站 | 视频国产精品 | 成人av专区| 宅男的天堂 | 亚洲视频免费播放 | 美女免费黄色 | 女同一区二区三区 | 欧美三区四区 | 亚洲三级爆操网站视频 | av不卡网 | 一级成人av | 一级欧美黄色大片 | 亚洲区国产区 | 日韩免费在线观看 | 欧美国产高清 | 夜夜操天天| 1区2区视频 | 天堂色网 | 日本精品视频 | 五月在线 | 亚洲熟区| 91精产国品 | 色就色欧美 | 日韩大片免费在线观看 | 亚洲色综合 | 国产91国语对白在线 | 人人人爽 | 欧美日韩h | www.天天操.com| 亚洲美女av在线 | 欧美黄色特级片 | 99色精品 | 亚洲国产欧洲 | 欧美在线视频网站 | 久久久夜夜 | 激情综合五月网 | 黄色av软件 | 日韩视频免费 | 日韩激情中文字幕 | 国产男人搡女人免费视频 | 日韩午夜三级 | 97超碰精品 | 污视频在线免费 | 91精品国产色综合久久不卡98 | a级在线观看视频 | 久久激情网站 | 日韩手机在线观看 | 日本免费高清 | 开心激情综合网 | a毛片在线| 亚洲欧美视频在线观看 | 亚洲伊人一区二区 | 九一国产在线 | 久久午夜国产精品 | 午夜小视频免费在线观看 | 日韩成人精品一区二区 | 日韩免费在线观看 | 日韩精品在线视频观看 | 国产精品一区二区三区久久久 | 色一区二区三区四区 | 亚洲制服丝袜在线播放 | 亚洲精品乱码久久久久久蜜桃不卡 | 嫩草99 | 欧美美女啪啪 | 嫩草影院在线观看视频 | 精品少妇一区二区三区视频免付费 | 欧美日韩国产麻豆 | 亚洲第一页在线观看 | 亚洲成人www| 尤物网站在线观看 | 欧美性生活网站 | 视色影视| 欧美a级免费 | www.一起操| 欧美黑人性生活 | 五月婷婷激情综合网 | 初尝黑人巨炮波多野结衣 | 天天躁夜夜躁狠狠躁 | 中文字幕亚洲情99在线 | 色女仆影院| 青青青青青青青青草 | 韩国av精华合集3小时 | www精品视频 | 天天色综合色 | 日日干综合 | 日韩操操操 | 免费一级特黄特色大片 | 插骚 | 伊人一区| 一区二区三区不卡视频 | 午夜在线网址 | 在线黄色大片 | 看片网址国产福利av中文字幕 | 欧洲精品在线观看 | 韩国三级少妇高潮在线观看 | 亚洲免费在线视频观看 | 欧美www视频 | 久精品在线 | 精品午夜一区 | 黄色在线观看国产 | 男人亚洲天堂 | 欧美 亚洲 一区 | 日韩欧美日韩 | 99精品小视频 | 亚洲激情在线观看 | 大奶久久| 国产性精品 | 国产亚洲精品码 | 一级片在线免费 | 黄色影院国产 | 麻豆久久99久久精品 | 日韩精品小视频 | 亚洲三级在线播放 | 日本一区二区不卡在线 | 一级片欧美| 一级黄色免费 | 成人激情免费视频 | av伊人久久 | 中文字幕在线2019 | 亚洲蜜臀av乱码久久精品 | 亚洲成人av一区二区三区 | 在线观看免费福利 | 日韩av成人在线观看 | 亚洲第一香蕉网 | 亚洲第一页在线观看 | 亚洲精品1234 | 亚洲欧洲中文字幕 | exo妈妈mv在线播放高清免费 | 国产午夜三级一区二区三 | 一级片在线免费观看 | 国产精品91在线 | 波多一区 | 久久精品国产麻豆 | 超碰免费97 | www.国产黄色 | 一级成人毛片 | 精品午夜久久 | 日韩av在线网址 | 亚洲欧美视频在线观看 | 久久精品国产亚洲7777 | 99久在线精品99re8热 | 亚洲国产一区视频 | 狼干综合 | 欧美一级片a | 69av在线 | 全部免费毛片在线播放高潮 | 日韩欧美高清在线 | 国产午夜精品一区 | 日韩亚洲欧美一区 | 悠悠av| 在线免费中文字幕 | 日韩高清在线一区 | 久久露脸国语精品国产91 | 999这里只有精品 | 欧美色就是色 | 杨贵妃颤抖双乳呻吟求欢小说 | 97精品欧美一区二区三区 | 日日人人 | 91亚洲精品乱码久久久久久蜜桃 | 极品美女无套呻吟啪啪 | 欧美成人一二三区 | 国产精品美女久久久久av超清 | 真实乱视频国产免费观看 | 中国成人av | 国产日韩网站 | 少女情窦初开的第4集在线观看 | 久草久操| 日韩免费看 | 色狠狠一区二区 | 日韩黄色免费视频 | 天堂在线| 国产a区| 日韩精品视频在线播放 | 一级大片免费 | 亚洲国产精品天堂 | 久久久久97国产 | 美女黄色一级片 | 成人高清视频免费观看 | 日韩网站在线 | 欧美一级黄 | 精品亚洲一区二区三区四区五区高 | 国产又粗又长又大视频 | 老鸭窝一区二区 | 五月婷婷视频在线观看 | 国产一级二级视频 | 蜜桃精品视频在线 | 日韩视频成人 | 秋霞av影院 | 色图插插插 | 欧美亚洲国产一区二区三区 | 神马久久网 | 四虎国产视频 | 伊人夜夜 | 国内精品久久久久久影视8 好吊日好吊操 | 日韩 在线| 成人免费性生活视频 | 国产福利短视频 | 久久久久中文字幕亚洲精品 | 日本激情视频网站 | 成人一区在线观看 | 国产福利网站 | 91麻豆国产视频 | 性视频免费看 | 超碰96在线| 国产高清免费视频 | 亚洲剧情在线 | 国产福利资源在线 | 国产成人精品免费看视频 | 波多野结衣二区三区 | 最新国产中文字幕 | www.插插插 | 东京热毛片| www.haoav| 在线视频精品播放 | 日本在线观看中文字幕 | 狠狠干狠狠操 | 狠狠狠狠狠狠狠 | 亚洲国产精品久久久久婷婷老年 | 亚洲第7页 | 中文字幕亚洲在线 | 黄色大片网站在线观看 | 国产操 | 99热免费在线 | 一级黄色小视频 | 亚洲天堂精品视频 | 伊人网综合在线 | 国产免费一级一级 | 日本日韩欧美 | 台湾性生生活1 | 日本一本久草 | 成人亚洲视频 | 噜噜噜久久,亚洲精品国产品 | 国产免费视频 | 久免费一级suv好看的国产 | 精品在线视频一区 | 成人aaaa | 亚洲国产精品18久久久久久 | 手机在线成人av | 懂色av中文一区二区三区天美 | 日日干天天操 | 久久免费少妇高潮99精品 | 久久艹免费视频 | 毛片视频在线免费观看 | 伊人啪啪| 夜夜骑日日 | 亚洲精美视频 | 国产成人av免费看 | 日本韩国欧美在线 | 欧日韩一区二区三区 | 日韩在线免费av | 中文毛片无遮挡高潮免费 | 亚洲aav| 成人福利在线播放 | 日韩免费三级 | 久久免费毛片 | 夜夜春影院 | 亚洲高潮av | 最近在线更新8中文字幕免费 | 朝桐光在线视频 | 日韩视频免费观看高清 | 黄色小视频免费在线观看 | 亚洲精品成人av | 国内精品久久久久久久久久久 | 一级特黄特色的免费大片视频 | 天天有av| 国产伦精品一区二区三区照片 | 亚洲福利在线播放 | 蜜桃久久久久久 | 欧美一级欧美三级在线观看 | 热re99久久精品国产99热 | 午夜激情婷婷 | 日韩中文字幕在线观看视频 | 成人在线免费观看视频 | 亚洲欧美一区二区三区情侣bbw | 亚洲风情第一页 | 欧美极度另类 | 销魂美女一区二区 | 国产精品99久久久久久小说 | 婷婷丁香激情 | 国产一国产一级毛片视频 | 成人毛片在线 | 日韩av一级片 | 久热只有精品 | 亚洲国产精品久久久久婷婷老年 | 99免费在线观看视频 | 欧美精品亚洲精品日韩精品 | 日韩欧美视频在线 | 亚洲福利av | 久久99精品久久久久久国产越南 | xxxx亚洲 | 俄罗斯女人裸体性做爰 | 欧美日本成人 | av爽妇网| 亚洲国产欧美日韩在线精品一区 | 99国内精品| 久久人人爽爽 | www激情 | 91欧美一区二区 | 永久精品视频 | 国产毛片不卡 | 亚洲字幕成人中文在线观看 | 国产精品久久久久久久久久久久午夜片 | 男人的天堂在线 | 夜色成人 | 91视频地址 | 影音先锋在线视频观看 | 娇小6一8小毛片 | 国产图片一区 | 91超碰在线免费观看 | 国产第三区 | 日韩一级大片 | 午夜视频福利在线 | 亚洲视频在线观看网站 | 男女黄床上色视频 | 亚洲国产精品一区二区尤物区 | 国产乱仑 | 国产精品国产精品国产专区不片 | 成人资源在线 | 日日操狠狠操 | 国产婷婷色一区二区三区 | 亚洲第一区在线 | 欧美特黄色片 | 黄色小说在线视频 | 国产噜噜噜噜久久久久久久久 | 91久久国语露脸精品国产高跟 | 先锋资源在线视频 | 国产激情视频一区 | 国产xxxxxxxxx| 91视频中文字幕 | 天天操天天弄 | 色狠狠久久av大岛优香 | 日本在线视频中文字幕 | 日本aⅴ视频 | 爱射综合 | 国产视频一区二区在线播放 | 欧美精品一区二区免费 | 中文字幕一二 | 四季av一区二区凹凸精品 | 奇米影视狠狠 | 国产成人精品毛片 | 国产九一精品 | 星空大象在线观看免费播放 | 国产在线播放一区 | 色综合网站| 老外一级片 | 手机看片日韩在线 | 国产奶水涨喷在线播放 | 97在线超碰| 国产女人18水真多18精品一级做 | 在线看毛片网站 | 欧美一页| 五月天精品 | 欧美黄色一级大片 | 久久久久久久久免费 | 亚洲va久久久噜噜噜久久天堂 | 欧美视频区 | 有码在线视频 | 一级三级黄色片 | 在线视频资源 | 国产成人tv | 欧美a级黄色片 | 国产二区av | 99精品人妻国产毛片 | av在线免费播放不卡 | 91精品资源 | 九九视频网 | 亚洲情在线 | chinese精品自拍hd | 性猛交xxxx乱大交孕妇2 | 经典一区二区 | 伦伦影院午夜理伦片 | 天天毛片 | 色婷婷一区二区三区 | 中文字幕网站 | avwww在线观看| αv在线| 懂色av.com| 欧美一区二区三区免费视频 | 午夜两性网 | 免费在线成人网 | 久久人妖 | 久久激情综合 | 成年人免费在线 | 国产v亚洲v天堂无码 | 亚洲一区二区中文字幕 | 精品自拍一区 | 午夜激情视频在线 | 国产6区 | 性xxxxx大片免费视频 | 亚洲手机在线观看 | 三级a毛片| 男女猛烈无遮挡免费视频 | 国产视频h | 亚洲区免费 | 在线免费观看黄色片 | 国产黄在线观看 | 亚洲第一成人久久网站 | 欧美日韩亚洲视频 | 一级片在线免费观看视频 | 日韩中文字幕在线播放 | 久久99精品久久久久婷婷 | 成人欧美一级特黄 | 最好看十大无码av | wwwxx国产 | 暖暖成人免费视频 | 国产毛片久久久久久久 | 亚洲欧洲国产日韩 | √天堂在线 | 午夜精品久久久久久久久久久久久蜜桃 | 成人av色| 国产精品羞羞答答在线 | www.精品| 一区二区三区日韩欧美 | 免费成人结看片 | 色久天堂 | 亚洲自拍偷拍精品视频 | 在线网站黄 | 欧美激情爱爱 | 三级视频黄色 | 精品国产专区 | 龚玥菲一级淫片 | 波多野结衣一二区 | 丹丹的呻吟声1一7 | 五月天激情综合 | 超碰1000| 精品无人国产偷自产在线 | 玖玖综合网 | 久久精品这里只有精品 | 含羞草一区二区 | 国产精品特级毛片一区二区三区 | 国内自拍av | 日韩骚片 | 日韩一级在线 | 男女国产视频 | 窝窝午夜精品一区二区 | 亚洲香蕉精品 | 免费99精品国产自在在线 | 欧美一级做| 99国产精品一区二区 | 男女www视频 | 色呦呦免费观看 | 国产精品久久久精品 | 国产精品aⅴ | 一本色道久久综合狠狠躁 | 国产精品毛片一区二区在线看 | 成人午夜久久 | 色中色av | 午夜网站在线观看 | 亚洲国产精一区二区三区性色 | 天天操天天干天天舔 | av免费亚洲| 中文字幕avav| 国产精品97 | 亚洲天堂导航 | 欧美第三页 | 福利二区 | 久久激情视频 | 色网站在线观看 | 亚洲日本欧美在线 | 色呦呦免费视频 | 91色九色| 五十路av| av基地网 | 亚洲精品一区二区在线 | 久久久精品国产 | 美女av黄 | 久草国产在线视频 | 午夜影院欧美 | 国产a自拍 | 亚洲精品久久久久久久久久久久久 | 午夜香蕉网| 欧美草逼网 | 在线看尤物 | www午夜| 精品久久久久久亚洲精品 | aa亚洲 | xx99小雪| 97精品国产露脸对白 | 高潮毛片7777777毛片 | 91香蕉国产在线观看软件 | 国产福利网 | 欧美69精品久久久久久不卡 | 99久国产 | 4438x亚洲最大 | 欧美激情黑白配 | 免费观看一级一片 | 欧美亚洲国产一区 | 手机看片一区二区 | 国产精品久久久久久久妇女 | 国产精品成人久久久 | 亚洲人午夜精品 | 久久精品99 | 一二三四区欧美 | 国产一级淫片免费 | 日韩中文字幕免费 | 久久这里有精品 | 国产精品suv一区 | 精品热|